golang中有3个位运算
按位与&、按位或|、按位异或^
按位与&:两位全为1,结果为1,否则为0
按位或|:两位有一个为1,结果为1,否则为0
按位异或^:两位一个为0,一个为1,结果为1,否则为0
例如:
2&3=2
2的补码0000 0010
3的补码0000 0011
2&3= 0000 0010
-2^2=-4
2的补码 0000 0010
-2的补码1111 1110
-2^2= 1111 1100(补码)==》1111 1011(反码)==》1000 0100(原码)
2|3=3
2的补码0000 0010
3的补码0000 0011
2|3= 0000 0011
2^3=1
2的补码0000 0010
3的补码0000 0011
2^3= 0000 0001
golang中有2个移位运算符
>>、<<右移和左移
右移运算符 >>:低位溢出,符号位不变,并用符号位补溢出的高位
左移运算符 <<:符号位不变,低位补0
例如:
a := 1 >> 2 //0000 0001 ==》0000 0000 = 0
b := 1 << 2 //0000 0001 ==》0000 0100 = 4
PS:来自尚硅谷 韩顺平