Go 語言運算子
Go語言中的 + - * / % == 等運算子都與C、java中的一脈相承
值得注意的是我在C和java中都不熟悉的位運算子
位運算子
位運算子對整數在記憶體中的二進制位進行操作,
下表列出了位運算子 &, |, 和 ^ 的計算:
| p | q | p&p | p\q | p ^ q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
假定 A = 60; B = 13; 其二進制數轉換為:
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
Go 語言支持的位運算子如下表所示,假定 A 為60,B 為13:
| 運算子 | 描述 | 實體 |
|---|---|---|
| & | 按位與運算子"&"是雙目運算子, 其功能是參與運算的兩數各對應的二進位相與, | (A & B) 結果為 12, 二進制為 0000 1100 |
| ^ | 按位異或運算子"^"是雙目運算子, 其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1, | (A ^ B) 結果為 49, 二進制為 0011 0001 |
| I | 按位或運算子"I"是雙目運算子, 其功能是參與運算的兩數各對應的二進位相或 | (A I B) 結果為 61, 二進制為 0011 1101 |
| << | 左移運算子"<<“是雙目運算子,左移n位就是乘以2的n次方, 其功能把”<<“左邊的運算元的各二進位全部左移若干位,由”<<"右邊的數指定移動的位數,高位丟棄,低位補0, | A << 2 結果為 240 ,二進制為 1111 0000 |
| >> | 右移運算子">>“是雙目運算子,右移n位就是除以2的n次方, 其功能是把”>>“左邊的運算元的各二進位全部右移若干位,”>>"右邊的數指定移動的位數, | A >> 2 結果為 15 ,二進制為 0000 1111 |
實體
package main
import "fmt"
func main() {
var a uint = 60 /* 60 = 0011 1100 */
var b uint = 13 /* 13 = 0000 1101 */
var c uint = 0
c = a & b /* 12 = 0000 1100 */
fmt.Printf("第一行 - c 的值為 %d\n", c )
c = a | b /* 61 = 0011 1101 */
fmt.Printf("第二行 - c 的值為 %d\n", c )
c = a ^ b /* 49 = 0011 0001 */
fmt.Printf("第三行 - c 的值為 %d\n", c )
c = a << 2 /* 240 = 1111 0000 */
fmt.Printf("第四行 - c 的值為 %d\n", c )
c = a >> 2 /* 15 = 0000 1111 */
fmt.Printf("第五行 - c 的值為 %d\n", c )
}
第一行 - c 的值為 12
第二行 - c 的值為 61
第三行 - c 的值為 49
第四行 - c 的值為 240
第五行 - c 的值為 15
Go還有一個特點就是它與C師出同門,也有著指標這一神奇的功能
| 運算子 | 描述 | 實體 |
|---|---|---|
| & | 回傳變數存盤地址 | &a; 將給出變數的實際地址, |
| * | 指標變數, | *a; 是一個指標變數 |
package main
import "fmt"
func main() {
var a int = 4
var b int32
var c float32
var ptr *int
/* 運算子實體 */
fmt.Printf("第 1 行 - a 變數型別為 = %T\n", a );
fmt.Printf("第 2 行 - b 變數型別為 = %T\n", b );
fmt.Printf("第 3 行 - c 變數型別為 = %T\n", c );
/* & 和 * 運算子實體 */
ptr = &a /* 'ptr' 包含了 'a' 變數的地址 */
fmt.Printf("a 的值為 %d\n", a);
fmt.Printf("*ptr 為 %d\n", *ptr);
以上實體運行結果:
第 1 行 - a 變數型別為 = int 第 2 行 - b 變數型別為 = int32 第 3 行 - c 變數型別為 =
float32 a 的值為 4
*ptr 為 4
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/275057.html
標籤:區塊鏈
上一篇:創建自己的區塊鏈網路 九
下一篇:簡單記錄Go語言的輸入與輸出
