Go 語言 進製的轉換 位運算子的使用

2021-10-02 01:43:59 字數 4282 閱讀 1702

二進位制: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 & 3

2 補碼:0000 0010

3 補碼:0000 0011

2 & 3 0000 0010 (2的二進位制補碼,跟3的二進位制補碼,位數相比,都為1, 才為1)

0000 0010 轉換成 十進位制 = 2

所以 2 & 3 輸出結果 2

2 | 3

2 補碼 :0000 0010

3 補碼: 0000 0011

2 | 3 0000 0011 (2的補碼,跟3的補碼,位數相比,有乙個為1,就為1)

0000 0011 轉成 十進位制 = 3

所以 2 | 3 輸出結果 3

2 ^ 3

2 補碼: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 0100

1000 0100 轉成 十進位制(不包括開頭的1, 開頭1代表是負數) =-4

移位運算:

右移運算子(>>):低位溢位,符號位不變,並用符號位補溢位的高位;

左移運算子(<<):符號位不變,低位補0;

package main

import

("fmt"

)func main()

// 輸出結果

右移位運算子a=

0左移位運算子c=

4

a := 1 >> 2

1 的 二進位制 :0000 0001 向右移動兩位-----> 0000 0000 -----> 結果:0

c := 1<< 2

1 的 二進位制: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。檢查兩個值是否不相等,如果不相等返...