在Go语言中,位运算符是一种对整数底层二进制表示进行直接操作的强大工具。这些运算符在底层编程、硬件接口控制、数据压缩算法和性能优化等领域广泛应用。本教程将深入解析Go语言支持的位运算符,并通过详尽实例展示其实际应用与运算过程。
位运算符列表
-
按位与(&)
-
运算规则:对于两个相同长度的整数,它们各自的二进制位对应相同时,结果位为1,否则为0。
A := 60 // 二进制: 111100
B := 13 // 二进制: 1101
C := A & B // 按位与运算过程:
// 111100 (A)
// & 000110 (B)
// = 000100 (C) 结果为12,二进制表示为1100 -
-
按位或(|)
-
运算规则:对于两个相同长度的整数,当对应的二进制位有任意一个为1时,结果位即为1。
Go
A := 60 // 二进制: 111100
B := 13 // 二进制: 1101
C := A | B // 按位或运算过程:
// 111100 (A)
// | 000110 (B)
// = 111110 (C) 结果为61,二进制表示为111101 -
-
按位异或 (^)
-
运算规则:对于两个相同长度的整数,当对应的二进制位不同时,结果位为1,否则为0。
Go
A := 60 // 二进制: 111100
B := 13 // 二进制: 1101
C := A ^ B // 按位异或运算过程:
// 111100 (A)
// ^ 000110 (B)
// = 111010 (C) 结果为49,二进制表示为110001 -
-
按位取反 (~)
-
运算规则:对一个整数的所有二进制位进行非运算,即将0变为1,1变为0。
Go
A := 60 // 二进制: 111100
C := ~A // 按位取反运算过程:
// 111100 (A)
// ~ ------
// = 000011 表示为-61(由于Go中的int是带符号的,所以转换为十进制后为负数) -
-
左移运算符 (<<)
-
运算规则:将一个整数的所有二进制位向左移动指定的位数,左边空出的位置补0,右边溢出的位被舍弃。
Go
A := 60 // 二进制: 111100
C := A << 2 // 左移两位运算过程:
// 111100 (A)
// << 00
// = 11110000 结果为240,二进制表示为11110000 -
-
右移运算符 (>>)
-
运算规则:将一个整数的所有二进制位向右移动指定的位数,右边空出的位置根据原整数的符号位填充(正数补0,负数补1),左边溢出的位被舍弃。
Go
A := 60 // 二进制: 111100 (正数)
C := A >> 2 // 右移两位运算过程:
// 111100 (A)
// >> 00
// = 001111 结果为15,二进制表示为001111 -
© 版权声明
THE END
- 最新
- 最热
只看作者