對於整數,有四種表示方式:
- 二進制:0,1。在golang中,不能直接使用二進制來表示一個整數。
- 十進制:0-9.
- 八進制:0-7.以數字0開頭表示。
- 十六進制:0-9,A-F。以0x開頭。
- 八進制轉二進制:將八進制中的每一位轉成對應的三位二進制。反之亦然。
- 十六進制轉二進制:將十六進制中的每一位轉成對應的四位二進制。反之亦然。
原碼、反碼、補碼
- 二進制的最高位是符號位,0表示正數,1表示負數
- 正數的原碼、反碼、補碼都一樣
- 負數的反碼=它的原碼符號位不變,其他位取反
- 負數的補碼=它的反碼+1
- 0的反碼、補碼都是0
- 在計算機運算的時候,都是以補碼的形式運算。
位運算
按位與:&
按位或:|
按位異或:^
2&3
2的補碼:0000 0010
3的補碼:0000 0011
2&3 :0000 0010 =>2
2|3
2的補碼:0000 0010
3的補碼:0000 0011
2|3 :0000 0011 =>3
2^3
2的補碼:0000 0010
3的補碼:0000 0011
2^3 :0000 0001 =>1
-2^2
-2的原碼:1000 0010
-2的反碼:1111 1101 // 原碼首位不變,其他位取反
-2的補碼:1111 1110 // 反碼+1
2的補碼:0000 0010
-2^2補碼:1111 1100 // 同位相同爲0,不同爲1
-2^2反碼:1111 1011 // 補碼-1
-2^2原碼:1000 0100 =>-4 //反碼首位不變,其他位取反
右移:>>,低位溢出,符號位不變,並用符號位補溢出的高位
左移:<<,符號位不變,低位補0