【发布时间】:2011-09-17 22:05:15
【问题描述】:
我有以下有符号整数:
(4bits)a = 6;
(4bits)b = 7;
(4bits)c;
c = a + b;
c = 13 还是 c= -3? 如果我做二进制数学并假设它是一个 4 位数字: 0110+0111=1101 (-8 + 4 + 0 + 1) = -3
【问题讨论】:
-
C 中带符号的 int 有多“大”?
-
你有 4 位机器吗?如果有,是什么?
-
@agent - 英特尔 4004?没有C编译器。 :-)
-
根据C语言第二版,4位机器一般应该有4位int。我相信甚至没有强制要求 int 是 1 或 2 补码系统(1 补码意味着 1 位用作有符号标志,因此您会丢失一个负数但得到 -zero 作为回报)。
-
@Roalt:如果《C 编程语言》第二版真的这么说,那就错了。 K&R 2ed 应该包含 ANSI 标准 C,即 C89,但 C89 表示
INT_MAX的最小允许值为32767(2.2.4.2 数值限制)。所以int一定不能是4位类型。