二進位制:0,1,滿 2 進 1;
在 go 中,不能直接使用 二進位制來表示乙個整數。
十進位制:0-9,滿 10 進 1;
八進位制:0-7,滿 8 進 1。以數字 0 開頭表示;
十六進製制:0-9 及 a-f,滿 16 進 1。以 0x 或 0x 開頭表示;
a-f 不區分大小寫
舉個栗子:
package main
import
("fmt"
)func main()
// 輸出結果
i 的二進位制是 101j=9
k=273
規則:從最低位開始(右邊),將每個位上的數提取出來,乘以2的(位數-1)次方,然後求和。
規則:從最低位開始(右邊),將每個位上的資料取出來,乘以8的(位數-1)次方,然後求和。
規則:從最低位開始(右邊),將每個位上的資料提取出來,乘以16的(位數-1)次方,然後求和。
規則:將 該數不斷除以2,直到商為0為止,然後每步得到的餘數倒過來,就是對應的二進位制。
規則:將該數不斷除以8,直到商為0為止,然後每步得到的餘數倒過來,就是對應的八進位制。
規則:將該數不斷除以16,直到商為0為止,然後將每步得到的餘數倒過來,就是對應的十六進製制。
規則:將二進位制數每三位一組(從低拉開始組合),轉成對應的八進位制數。
規則:將二進位制數每四位一組(從低位開始組合),轉成對應的十六進製制數。
規則:將八進位制數每1位,轉成對應的乙個3位的二進位制數。
規則:將十六制數每1位,轉成對應的乙個4位的二進位制數。
運算子描述
&按位與運算子。功能是參與運算的兩數各對應的二進位相與。運算規則:同時為 1,結果為 1 ,否則為0
|按位或運算子。功能是參與運算的兩數各對應的二進位相或。運算規則:有乙個為1,結果為1,否則為0
^按位異或運算子。功能是參與運算的兩數各對應的二進位相異或。運算規則:當二進位不同時,結果為1,否則為0
<<
左移運算子。功能是把《左邊的運算數的各二進位全部左移若干位,高位丟棄,低位補0
。左移n位就是乘以2的n次方
>>
右移運算子。功能是把》右邊的運算數的各二進位全部右移若干位,右移n位就是除以2的n次方
對於有符號而言:
二進位制的最高位是符號位:0表示正數,1表示負數
:
1 - - - > [0000 0001] // 正數-1 - - - > [1000 0001] // 負數
正數的原碼、反碼、補碼都一樣;
負數的反碼 = 它的原碼符號位不變,其它位取反(0 -> 1, 1 -> 0);
1 - - -> 原碼 [0000 0001] 反碼 [0000 0001] 補碼 [0000 0001]-1 - - -> 原碼 [1000 0001] 反碼 [1111 11110] 補碼 [1111 1111] // 負數補碼 = 反碼 + 1
負數的補碼 = 它的反碼 + 1;
0 的反碼,補碼都是0;
計算機運算時
,都是以補碼方式來運算的。
1 + 1 1 - 1 = 1 + (-1)
位運算子:
按位與(&):兩位全為 1,結果為 1, 否則為 0 ;
按位或( | ):兩位有乙個為 1 ,結果為 1,否則為 0;
按位異或( ^ ):兩位乙個為 0 ,乙個為 1,結果為 1,否則為 0;
package main
import
("fmt"
)func main()
// 輸出結果23
1-4
2 & 32 補碼:0000 0010
3 補碼:0000 0011
2 & 3 0000 0010 (2的二進位制補碼,跟3的二進位制補碼,位數相比,都為1, 才為1)
0000 0010 轉換成 十進位制 = 2
所以 2 & 3 輸出結果 2
2 | 32 補碼 :0000 0010
3 補碼: 0000 0011
2 | 3 0000 0011 (2的補碼,跟3的補碼,位數相比,有乙個為1,就為1)
0000 0011 轉成 十進位制 = 3
所以 2 | 3 輸出結果 3
2 ^ 32 補碼:0000 0010
3 補碼:0000 0011
2 ^ 3 0000 0001 (2的補碼,3的補碼,位數相比, 乙個為1,乙個為0 ,才為1)
0000 0001 轉成 十進位制 = 1
所以 2 ^ 3 輸出結果 1
-2 ^ 2移位運算:-2 原碼:1000 0010
-2 反碼:1111 1101
-2 補碼:1111 1110 ( 負數情況下,反碼+1 = 補碼,別忘了我們是二進位制 +1 進一位)
2 補碼:0000 0010
-2 ^ 2 1111 1100 (2的補碼,3的補碼,位數相比,乙個為1,乙個為0,才為1)
1111 1100 為
補碼
- - -補碼轉反碼需要減 1- - ->反碼
1111 1011 - - -負數操作開頭為1 - - ->原碼
1000 01001000 0100 轉成 十進位制(不包括開頭的1, 開頭1代表是負數) =-4
右移運算子(>>):低位溢位,符號位不變,並用符號位補溢位的高位;
左移運算子(<<):符號位不變,低位補0;
package main
import
("fmt"
)func main()
// 輸出結果
右移位運算子a=
0左移位運算子c=
4
a := 1 >> 21 的 二進位制 :0000 0001 向
右移動兩位
-----> 0000 0000 -----> 結果:0
c := 1<< 21 的 二進位制:0000 0001 向
左移動兩位
-----> 0000 0100 -----> 結果:4
Go語言的運算子
運算子 術語 示例 結果 加10 515 減10 55 乘10 550 除10 5 2 值取整數字,要想帶小數為,則10.0 5 2.0 取模 取餘 10 3 1 取模公式 a a b b 後自增,沒有前自增 單獨語句,並不是運算子 a 0 a a 1 後自減,沒有前自減 單獨語句,並不是運算子 a...
Go語言運算子
go語言學習教程 www.lsdcloud.com 運算子用於在程式執行時執行數學或邏輯運算。go 語言內建的運算子有 求餘 下表列出了所有go語言的算術運算子。假定 a 值為 10,b 值為 20。運算子描述例項 相加a b 輸出結果 30 相減 a b 輸出結果 10 相乘 a b 輸出結果 2...
Go語言 運算子
go 語言內建的運算子有 算術運算子 關係運算子 邏輯運算子 位運算子 賦值運算子 運算子描述 相加 相減 相乘 相除 求餘 注意 自增 和 自減 在go語言中是單獨的語句,並不是運算子。運算子描述 檢查兩個值是否相等,如果相等返回 true 否則返回 false。檢查兩個值是否不相等,如果不相等返...