• 2022-06-28
    为什么无符号数运算时结果可能会发生“溢出”?什么叫无符号数的“溢出”?
  • 计算机的机器字长总是有限的,因而机器数的位数有限,使得可表示的数的个数有限。对于n位二进制数,只能表示2n个不同的数,当运算结果超过n位数时就可能发生溢岀。对于无符号数来说,计算机运算过程中一般保留低n位,舍弃高位。这样会产生两种 结果: ① 剩下的低n位数不能正确表示运算结果。这种情况意味着运算的结果超出了计算机能表达的范围,有效数值进到了第n+1位,我们称此时发生了“溢出”现象。例如,对于4位无符号数相加运算,当计算14+3时就发生溢出,即1110+0011 = 1 0001,结果中第一位1是数值部分,这个1丢弃后结果就不对了。 ② 剩下的低n位数能正确表达计算结果,也即高位的舍去并不影响其运算结果。例如,对于4位无符号数相减运算,当计算14-3时,用14加-3的补码来实现,即1110+1101 =1 1011,结果中第一位1不是数值部分,这个1丢弃后的结果是十进制的11,因此是正确的。 “对一个多于n位的数丢弃高位而保留低n位数”这样一种处理,实际上等价于“将这 个多于n位的数去除以2n然后丢弃商保留其余数”的操作。这种操作运算就是“模运算”。 在一个模运算系统中,运算的结果最终都是丢弃高位而保留低位。所以,只要不是“溢出”(即只要真正的值不会进到第n+1位),结果就是正确的。这是模运算系统的特点。

    内容

    • 0

      当标志位=1时,表示无符号数运算产生溢出

    • 1

      中国大学MOOC: 单符号位补码表示的两个同号数相加或异号数相减时,所得结果的符号位SF和进位标志CF进行()运算为1时,表示运算的结果产生溢出

    • 2

      当两个同符号数相加或者不同符号数相减时,运算结果可能超出有效范围导致溢出。

    • 3

      在无符号数的运算过程中,可以通过ov位来判断结果是否溢出。

    • 4

      当采用双符号位进行数据运算时,若运算结果的双符号位为01,则表明运算()。 A: 无溢出 B: 正溢出 C: 负溢出 D: 不能判别是否溢出