1个回答
展开全部
这个试一下就知道了
比如-2 假定只有8位 1000 0010
如果是原码 那么就是1000 0010 >>1 =1000 0001 这就是-1
如果是补码 就是1111 1110>>1 =1011 1111 这就是-63了 (当然 如果是其他位数肯定不是-63)
不过-2>>1是-1 所以是操作的原码
比如-2 假定只有8位 1000 0010
如果是原码 那么就是1000 0010 >>1 =1000 0001 这就是-1
如果是补码 就是1111 1110>>1 =1011 1111 这就是-63了 (当然 如果是其他位数肯定不是-63)
不过-2>>1是-1 所以是操作的原码
追问
Java不是用补码在内存中存储数字的吗
追答
日了狗 昨天太晚迷迷糊糊 怎么说是原码 位操作都是操作的补码 真不好意思..
>>右移是带符号右移 1111 1110>>1是等于 1111 1111 这正好是负1的补码
原码是1000 0010>>1右移变成 1100 0001 这个换成整数是(1011 1111 )=-63
不好意思 我搞混了 抱歉抱歉
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询