在8位机器上添加二进制数01000001和11111111的结果是什么?
答案 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)