c++ - 计算机总是按照2的补码法来表示负数吗?

标签 c++ c

请查看以下代码并帮助我理解它

int a=1;
int b=~1;
printf("%d",b);

输出是:

 -2

所以这表示 1=(00000001) 当经历 ~ 产生 (11111110) 这是数字 2 的 2 的补码,因此 -2 是答案。 所以 100 将始终被假定为 -4 而不是 4 ?

最佳答案

Does computer always follow 2's complement method to represent negative number?

没有。

一些计算机使用 1 的补码(其中 ~1 == -0),一些使用“符号和大小”(其中 ~1 == -127),一些使用“偏差”(其中有符号值是“无符号值 -偏差”,其中 ~1 == 127)。对于整数,这些现在都比较少见。

标准 (IEEE-754) 浮点格式并不罕见;这是“符号和幅度”(用于尾数)和“偏差”(用于指数)的完美结合。

关于c++ - 计算机总是按照2的补码法来表示负数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47964887/

相关文章:

c++ - MFC header 中的语法错误

C pthread_join() 产生段错误

c++ - 为什么 fmt 库不是仅 header ?

c++ - 如何防止 C++ 或 native 编译代码中的 I/O 访问

c++ - 关于 C++ 中全局内联函数的示例

c - 释放指针内存后,我可以重新分配值

c - C 中的字符串异或函数 : How to deal with null characters?

C: x = !y 是什么意思?

c - PTHREAD_MUTEX_INITIALIZER 与 pthread_mutex_init ( &mutex, param)

c++ - 哪些 g++ 标志会使堆栈上运行时大小的数组导致编译器错误?