全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3109
推到 Plurk!
推到 Facebook!

XOR是怎麼進行運算?

答題得分者是:
ry_lee
高階會員


發表:368
回覆:251
積分:123
註冊:2002-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-20 23:09:46 IP:211.73.xxx.xxx 未訂閱
以下程式碼有XOR運算 procedure TForm1.Button3Click(Sender: TObject); var i,j:integer; aary:array[1..5] of integer; begin j:=64; for i:=1 to length(aary) do aary[i]:=j i ; for i:=1 to length(aary) do begin aary[i]:=aary[i] xor 3 ; showmessage('i = ' inttostr(i) ' = ' inttostr(aary[i])); end; 此時為何 aary[1]=66 aary[2]=65 aary[3]=64 aary[4]=71 aary[5]=70 for i:=1 to length(aary) do begin aary[i]:=aary[i] xor 3 ; showmessage('i = ' inttostr(i) ' = ' inttostr(aary[i])); end; end; 此時為何 aary[1]=65 aary[2]=66 aary[3]=67 aary[4]=68 aary[5]=69

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-20 23:31:16 IP:220.134.xxx.xxx 未訂閱
首先,XOR運算為同性相斥,即輸入相同輸出即為0,輸入相異則輸出為1. 而xor在此為bit to bit運算. 1>第一段程式執行至未做xor運算前aary[1]=65,aary[2]=66,aary[3]=67,aary[4]=68,aary[5]=69 以65為例,65=01000001b , 3=00000011b =>xor 運算後即等於01000010b=66 同理,即可知 aary[1]=66,aary[2]=65,aary[3]=64,aary[4]=71,aary[5]=70 2>第二段程式執行前aary[1]=66,aary[2]=65,aary[3]=64,aary[4]=71,aary[5]=70 同理,便可知xor運算後aary[1]=65,aary[2]=66,aary[3]=67,aary[4]=68,aary[5]=69 P.S:你可以試試,不管跟多少做xor,只要做兩次,就會跟原來一樣.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-20 23:41:08 IP:220.131.xxx.xxx 未訂閱
XOR:
A B C
======
0 0 0
0 1 1
1 0 1
1 1 0
預設值aary[2]=65 (1000001) 經XOR後 aary[2]=66 (1000001) Xor (11) =1000010(十進制:66) 網海無涯,唯學是岸!
系統時間:2024-05-18 22:20:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!