先知道這兩個二進制數據的特點: 1=0000 0000 0000 0000 0000 0000 0000 0001
-1=1000 0000 0000 0000 0000 0000 0000 0001
1.最高位(首位)表示正負(0為正,1為負)
2.最低位(末位)表示奇偶(0為偶,1為奇)
十進制1按位取反後=?
分析:
1. 十進制1轉為二進制為:1= 0000 0000 0000 0000 0000 0000 0000 0001
2. 按位取反:把原來的二進制得到一個新的二進制,原來是0的則變為1,1的則變為0。
1按位取反後得到 1111 1111 1111 1111 1111 1111 1111 1110
3.二進制的最高位(首位)表示正負(1為負,0為正),如果是負數,如果是負數,則需要用計算機中的補碼來表示。
補碼:補碼=符號位(最高位)以後按位取反再加1.
補碼為 1000 0000 0000 0000 0000 0000 0000 0010
4. 結果為:把補碼轉為十進制: -2;
~1==-2
十進制-1按位取反後=?
1. -1的二進制是 1000 0000 0000 0000 0000 0000 0000 0001
2. 負數是以其補碼的形式儲存的
-1在計算機中存的是 1111 1111 1111 1111 1111 1111 1111 1111
3. 按位取反: 0000 0000 0000 0000 0000 0000 0000 0000
4.結果為:轉為十進制:0
~-1==0
按位與and(&): 相同位的兩個數字都為1,則為1;若有一個不為1,則為0。
25&3=> 25= 0000 0000 0000 0000 0000 0000 0001 1001
3= 0000 0000 0000 0000 0000 0000 0000 0011
-------------------------------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0000 0001
25&3==1
按位異或(^):相同位不同則為1,相同則為0
25^3=> 25= 0000 0000 0000 0000 0000 0000 0001 1001
3= 0000 0000 0000 0000 0000 0000 0000 0011
-------------------------------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0001 1010
25&3==26
按位或(|):相同位只要一個為1即為1。
25|3=> 25= 0000 0000 0000 0000 0000 0000 0001 1001
3= 0000 0000 0000 0000 0000 0000 0000 0011
-------------------------------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0001 1011
25|3==27
把1的位置向右移n位,超出的就捨掉
15=0000 0000 0000 0000 0000 0000 0000 1111
15>>1=0000 0000 0000 0000 0000 0000 0000 0111
15>>1=7
:右移1位即除以21;,並且取整。
n>>4==n/(24)
64>>4==4
把1的位置向左移n位,超出的就捨掉
:左移1位即乘以21;,並且取整。
n<<4==n*24
2<<4==32