右移>>和无符号>>> 补码

位操作 &与、|或、~按位取反、^异或、<<左移、>>右移
右移>> 正数高位补0,负数高位补1
无符号右移>>> 不论正负,高位均补0
无符号左移是不存在的,因为左移在低位补位,而低位没有正负数的概念,因此不存在无符号左移

demo:右移

负数:例如-4>>2(高位补1)
首先写出-4的二进制数源码,因为是负数所以最高位为1   (负数的源码是负数的绝对值)

1000 0100

然后写出-4反码:保证符号位不变,其余位置取反

1111 1011(反码)

最后写出-4的补码:在反码的基础上加1

1111 1100(补码)

右移2位: 在高位补1

1111 1111

//!!!!!!!!!!!!!!!!!!!!
根据补码写出原码才是我们所求的结果, 保留符号位,然后减1取反    (或按位取反再加上11111 1110(减1的结果)

1000 0001(取反的结果)

结果为:-1

重点:根据补码写出原码才是我们所求的结果, 保留符号位,然后减1取反 (或按位取反再加上1)

demo:无符号右移>>>


无符号右移>>>(不论正负,高位均补0)  注意:无符号,所以都是当正数操作的
正数:例如4>>>24>>2的运算相同,结果也为1

负数:例如-4>>>2

首先写出-4的二进制数,因为是负数所以最高位为1

1000 0100

然后写出-4补码:保证符号位不变,其余位置取反加1(从右往左遇到第一个1,然后剩下的全部取反就是了)

1111 1100(补码)

右移2位: 在高位补0

0011 1111
此时为正数,求源码与补码相同

结果为:63

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值