gpt4 book ai didi

java - 为什么-127>>1的二进制表示是11000000?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:28:49 25 4
gpt4 key购买 nike

我知道 -127 的二进制表示是 10000001(补码)。

任何人都可以告诉我为什么我将它右移 1 位,然后我得到 11000000 吗?

(-127) = 10000001

(-127>>1) = 11000000 ???

谢谢。

最佳答案

如果您的编程语言进行符号扩展右移(如 Java 所做的),那么最左边的 1 来自扩展符号。也就是说,因为最高位是在原始数字中设置的,所以它在每次移位的结果中保持设置(因此移位超过 1 时最高位中的所有 1 对应于完成的移位数)。

这是语言相关的——IIRC C 和 C++ 对有符号值的右移进行符号扩展,而不是对无符号值。 Java 有一个特殊的 >>> 运算符可以在不扩展的情况下进行移位(在 Java 中,所有数字原始值都是有符号的,包括误导性命名的字节)。

关于java - 为什么-127>>1的二进制表示是11000000?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11197458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com