第2章 数据的表示和运算

    科技2022-08-10  90

    若 , , 则[x+y]补, [x-y]补的运算表达式如下:

     [x+y]补 = [x]补 + [y]补   (mod 2的n次方)

     [x-y]补 = [x]补 + [-y]补 (mod 2的n次方)

    从上式可看出,无论 x, y 是正数还是负数,补码的加、减运算可统一用加法实现, 而且[x]补 和[y]补  的符号位可以和数值位一起参与运算, 加、减运算结果的符号位也在求和运算中直接得出。

    可以看到,实现减法的主要工作在于求[-y]补。

     求一个数的负数的补码由其补码"各位取反, 末位加1 "得到

     因为无符号整数相当于正整数, 而正整数的补码表示等于其二进制表示本身, 所以, 无符号整数的二进制表示相当于正整数的补码表示。

     

    看一个例子:用4位补码计算 “-7-6” 和 “-3-5” 的值。

    解: [-7] 补 = 1001,  [-6]补 = 1010, [-3]补 = 1101, [-5]补 = 1011

            [-7-6]补 =[-7]补 + [-6]补 = 1001 + 1010 = 0011 (+3)

            [-3-5]补 = [-3]补 + [-5]补 = 1101 + 1011 = 1000(-8)

     

    因为4位的补码的可表示范围为-8~+7, 而-7-6=-13<-8, 所以0011(+3)一定发生了 溢出。是一个错误的值。

    Processed: 0.037, SQL: 8