c - 2 的补码表示法也用于正数吗?

标签 c integer unsigned-integer

当我写:

signed int a = 4;

我的计算机使用 2 的表示法吗?

因为如果我的计算机使用 2 的补码表示法来表示数字 4,这就是在 8 位机器上会发生的情况:

二进制值 4:0000 0100

2的补码变为:1111 1011

添加1:1111 1100

但我读到,当最高有效位为 1 时,您的数字为负数。但这里我的最高有效位是 1 ,我的数字是 4 。它不是-4。

为什么我的数字 4 的最高有效位是 1?

最佳答案

2’s complement become: 1111 1011

没有。你从哪里得到这个想法的? 1111 1011 是二进制补码的-5-5 不是 +4

-4 也与 +4 不同。

4 的二进制值为 0000 0100。因此,4 的有符号数字变量表示形式也是 0000 0100。

除非数字为负数,否则二进制补码无关紧要。

why my number 4 has a 1 as the most significant bit?

事实并非如此。您的 -4 的 MSB 为 1。

关于c - 2 的补码表示法也用于正数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40342001/

相关文章:

c - unsigned 和 unsigned int 有区别吗

c++ - 在 Irrlicht 中使用 SDL

c# - 在 C# 中获取 "append"整数的好方法?

c - 输入整数(无限制)并找到最小的(C语言)

python - Python 中的 %i 和 %d 有什么区别?

c - 理解这个 16 位 PRNG

c - 如何计算 32 位无符号整数中的前导零

c - 如何动态生成 X86_64 以返回相对于 RIP/RBP 的值

c - 带视口(viewport)的滚动窗口的垂直尺寸没有最小但最大

c - 我需要一些帮助,用 openGL 设计太阳能系统