與或運算和加減運算

2021-10-01 20:40:59 字數 1763 閱讀 9617

從數電位運算得角度康康加減運算,用c跑一跑

--

----

----

----

----

----

----

----

----

----

---operation.cpp

/* to understand the connection between (and、or) and (addition、subtraction)

*/#include

using

namespace std;

intmain()

/* add 64 to test num by xor operation(|) */

testnum = testnum|

0x40

; cout<<

"#testnumber + 64(|0x40)#\t"

testnum = testnum&

0x40

; cout<<

"#testnumber - 64(&0x40)#\t"

<----

----

----

----

----

----

----

----

----

---operation.cpp

說明:

使用與(&)或(|)兩種位運算子,分別實現正整數的減加運算

1、加法運算add:

2+4=6;使用四位二進位制表示三個數分別是:

0010+0100=0110;

故而有:

testnum = 2(d) = 0010(b)

testnum+4----------------> +0100

使用或運算子實現加法運算。也即是在對應的位(bit)上填補1

注:所謂在對應的位填補1,就是說把+2轉換成把權為2的位變成1

和 對應位為1的數 作或運算 恰恰有這個功能

(和1或運算的結果恒為1)

using xor operation ----->  0010--------->2

|0100--------->+4

-------

0110--------->6

2、減法運算subtraction:

testnum = 6(d) = 0110(b)

testnum-4----------------> -0100

模擬加法運算,不難得出減法運算的規律----把對應位上的數替換成0,這就要用到與運算了。和對應位位0的數相與,自然能夠實現這點

using and operation to cut the '1' on right bit

then,we need use ('0') and (and operation)

negative code of 0100-----> 1011

--------------------------> 0110--------->6

&1011--------->-4

------

0010--------->2

(與運算) (或運算) (異或運算)

即 兩個運算元同為 1 的時候為1 0 0 0 1 0 1 0 1 1 1 1 1 即 兩個運算元中至少有乙個為 1 的時候為1 0 0 0 0 1 1 1 0 1 1 1 0 即 兩個運算元不同的時候為1 運算規則 1 0 0 1 即 對乙個二進位制數按位取反,即將0變1,1變0。將乙個運算物件的...

與運算( ) 或運算( ) 異或運算( )

預算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩個同時為1,結果為1,否則為0 例如 3 5 十進位制3轉為二進位制的3 0000 0011 十進位制5轉為二進位制的5 0000 0101 結果 0000 0001 轉為十進位制 1 即 3 5 1 運算規則 0 0 0 0 1 1 ...

與運算( ) 或運算( ) 異或運算( )

一 與運算子 預算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩個同時為1,結果為1,否則為0 例如 3 5 十進位制3轉為二進位制的3 0000 0011 十進位制5轉為二進位制的5 0000 0101 結果 0000 0001 轉為十進位制 1 即 3 5 1 二 或運算 運算規則...