42得票2回答
从整数到浮点数再返回时,符号会发生变化。

请考虑以下代码,它是我的实际问题的SSCCE:#include <iostream> int roundtrip(int x) { return int(float(x)); } int main() { int a = 2147483583; int ...

38得票6回答
为什么在C#中,-3等于~2?

看不懂。为什么输出是"equal"? 代码: if (-3 == ~2) Console.WriteLine("equal"); else Console.WriteLine("not equal"); 输出:equal

35得票9回答
为什么 Integer.MAX_VALUE + 1 == Integer.MIN_VALUE?

System.out.println(Integer.MAX_VALUE + 1 == Integer.MIN_VALUE); 这段代码输出的结果是true。 我理解在Java中int类型是32位的,不能超过231-1,但我不明白为什么将1加到MAX_VALUE上会导致结果为MIN_VAL...

31得票5回答
为什么有符号字节的取值范围是从-128到127(二进制补码),而不是从-127到127?

我读到了Java中为什么字节的范围是-128到127? 128的二进制表示为10000000。反转后得到01111111,再加一变成10000000 因此结论是-128的二进制表示为10000000。 +128在8位二进制补码下无法表示,但这意味着我们可以用9位二进制来表示它,所...

31得票3回答
为什么在x86(-64)上,有符号和无符号乘法是不同的指令?

我认为2的补码的整个要点在于可以使用相同的方式对有符号和无符号数字执行操作。 维基百科甚至特别列出乘法是其中受益的操作之一。那么为什么x86需要针对每种类型(mul和imul)分别提供指令?x86-64是否仍然如此?

30得票4回答
为什么C++不强制使用二进制补码?

新的C++标准仍然没有规定整数类型的二进制表示方式。这是因为有使用非2的补码算术的C++实现么?我认为这很难相信。还是委员会担心未来硬件的进步会使“位”这个概念过时?同样也很难相信。有人能否阐述一下这个问题? 背景:在评论串(Benjamin Lindley回答这个问题)中,我被piotr的...

26得票4回答
C语言中负数的表示方法是什么?

C语言如何表示负整数? 是使用二进制补码表示还是使用最高位(MSB)来表示? 十六进制中的-1是ffffffff。 请给我解析一下。

24得票3回答
如何用2的补码表示一个带分数的负数?

我想表示数字-12.5. 所以12.5等于:001100.100 如果我不考虑分数,那么-12就是一个简单的数字。110100 但是-12.5是什么?它是110100.100吗?我如何计算这个负分数?

24得票5回答
负数在内存中以二进制补码的形式存储,那么CPU如何知道它是正数还是负数?

-1可以用4位二进制数(2's complement) 1111来表示。 15也被表示为1111。 那么,当CPU从内存中获取数值时,它如何区分15和-1呢?

23得票7回答
为什么 byte b = (byte) 0xFF 等于整数 -1?

为什么 byte b = (byte) 0xFF 等于 integer -1? 例子:int value = byte b = (byte) 0xFF; System.out.println(value); 它会打印出-1吗?