computer-science - 数值原始数据类型

标签 computer-science

在大多数整数数据类型具有有限范围的编程语言中,负数总是比正数多一个。

例如,在C中,一个字节是-128~127,一个int是在-2^31和2^31-1之间(包括-2^31和2^31-1)。 由于直觉上正数出现的频率更高,所以一个字节不是-127~128,是否有原因?

最佳答案

最大的正数是0111 1111 = 127

128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
 0  | 1  |  1 |  1 | 1 | 1 | 1 | 1 |

最大负字节为1000 0000 = -128

-128| 64 | 32 | 16 | 8 | 4 | 2 | 1 |
 1  | 0  |  0 |  0 | 0 | 0 | 0 | 0 |

在二进制中,MSB(最高有效位 - 前面的一位)被保留以表示负数。这个概念叫做 Twos' Complement大多数计算机都使用它作为以二进制(基数 2)表示法表示整数的一种方式。

要获取更多信息,请查看二进制计算

关于computer-science - 数值原始数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13215786/

相关文章:

java - 字节数组是什么意思?

c++ - MPI 如何决定其排名大小

python - 给定一个大小为 N 的列表 A,如何创建一个列表 B,使 B 的每个元素都是 A 和 B 的前一个元素之和?

c - 我对带有递归函数的 Big-O Notation 有点困惑

c++ - 对象的动态数组与指针的动态数组

c - 如何在 C 中旋转一维数组的一部分?

java - 将伪代码转换为尽可能相似的实现

algorithm - 这是计算机科学中常见的模式吗?

algorithm - 在一维数组中查找有界最近邻

c - heartbleed bug 是 C 中经典缓冲区溢出漏洞的表现吗?