從數電位運算得角度康康加減運算,用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"
* substaction 64 by xand operation */
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 二 或運算 運算規則...