添加“二进制”数字

时间:2010-09-23 12:57:29

标签: c binary

在8位机器上添加二进制数0100​​0001和11111111的结果是什么?

7 个答案:

答案 0 :(得分:2)

如果我们应该用C的规则解释它(它被标记为这样),对于签名的情况,这些数字可能有三种解释,对应于C中允许的三种符号表示。

对于无符号的情况,标准要求无符号算术静默包装。在这种情况下,所有计算都以256为模。

答案 1 :(得分:1)

整数溢出。

如果数字是无符号的(即模块化),0100000(模块化8位数学,加11111111等于减1)。

答案 2 :(得分:0)

我想你只需添加数字,然后剪掉溢出的位(从左边开始)

答案 3 :(得分:0)

如果两个值都是无符号的,则结果为十进制的320。在添加之前,两个操作数都被提升为int,并且标准要求int至少具有16位,即使在8位机器上也是如此。问题不会对结果做出任何限制。

答案 4 :(得分:0)

除非你想要“快速错误的结果”,否则答案是 320

在任何地方(包括8位计算机)正确添加两个数字(无论以何种方式表示)都会产生一个唯一的数字,可以用多种不同的方式表示。

320可表示为320(通常的十进制(基数为10)表示)或101000000(二进制表示)或2 5 3 4 1 3 1 2 0 1 0 0 (factoradic),...

答案 5 :(得分:0)

如果它只有8位,那么如果值是无符号的,则可以具有的最大值为255(1111 1111),如果是有符号的则为127(-128为最低值)。因此,执行此添加将导致溢出,返回0然后继续计数。把它想象成你的车里程表:如果计数器上只有8位数,而你的计数器是99 999 999英里,如果再加一个,计数器将回到0。

答案 6 :(得分:-1)

  • 如果这些是有符号整数,则它们代表65和 -128 -1。添加它们将给出 -63 64。
  • 如果这些是无符号整数,则它们代表65和255.由于总和不能用8位表示,结果将是64,溢出位将被设置。