golang 原码 反码 补码

1.二进制的最高位是符号位:0表示正数,1表示负数

1===》(0000 0001) -1(1000 0001)

2.正数的原码,反码,补码都一样

3.负数的反码=它的原码符号位不变,其他位取反(0->1,1->0)

1===》原码(0000 0001) 反码(0000 0001) 补码(0000 0001)

-1===》原码(1000 0001)反码(1111 1110) 补码(1111 1111)

4.负数的补码=它的反码+1

5.0的反码,补码都是0

6.在计算机运算的时候,都是以补码的方式来运算的

位运算符和移位运算符

位运算符案例分析:

2&3=2

0000 0010

0000 0011

--------------

0000 0010

2|3=3

0000 0010

0000 0011

--------------

0000 0011

2^3=1

0000 0010

0000 0011

--------------

0000 0001

-2^2= -4

-2的原码 1000 0010  =>反码 1111 1101 => 补码 1111 1110

2 的补码 0000 0010

1111 1110

0000 0010

--------------

1111 1100(负数的结果需要在转回去)

1111 1100 补码 =>反码 1111 1011 =>原码 0000 0100 最后结果等于-4

移位运算符案例

  >>,<< 右移和左移,运算规则

右移运算符 >>:低位溢出,符号位不变,并用符号位补溢出的高位

左移运算符 <<:符号位不变,低位补0

a := 1 >> 2  0000 0001 溢出2位 0000 0000 结果等于0

c := 1 << 2  0000 0001 左移2位 0000 0100 结果等于4

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值