最高位是符号位或无符号位JAVA

当最高位是无符号位,1111_1111是表示255

当最高位是符号位,1111_1111的首位表示负数,负数的二进制转十进制,先取反1000_0000再加1为1000_0001,即-1

在java中,对于一个队列序号取中值,m = (i+j)/2,可能会有问题,若i+j数值超过了int的最大值(interger.MAX_VALUE),则当超过java中最大正整数能表示的范围则需要把首位看成符号位导致最终相加结果为负数

同一个二进制数
1011 1111 1111 1111 1111 1111 1111 1110
不把最高位视为符号位,代表3221225470。把最高位视为符号位,代表-1073741826

为了解决这个问题,使用无符号右移运算符代替,(右移一位除以二,左移一位乘以二),

  原来

两组二进制数相同但十进制数不同,

右移后

则可以在最大整数范围内表示      

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值