位运算符和移位运算符

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:来自尚硅谷 韩顺平

上一篇:hexo点击博客后标题不显示


下一篇:地大《建筑材料》在线作业二-0011