本文共 1664 字,大约阅读时间需要 5 分钟。
n位的无符号数表示范围为:0 ~ 2n -1
原码
:用尾数表示真值的绝对值,符号位“0/1”对应“正/负”
原码整数
的表示范围: - ( 2n -1) ~ 2n -1 若机器字长n+1位,原码小数
的表示范围: - ( 1-2-n ) ~1- 2-n
反码
:若符号位为0,则反码与原码相同
反码整数
的表示范围: - ( 2n -1) ~ 2n -1 若机器字长n+1位,反码小数
的表示范围: - ( 1-2-n ) ~1- 2-n
补码
:正数的补码 = 原码
补码的真值0只有一种表示形式
采用补码表示时,若符号位相同,则数值位越大,码值越大。
★定点整数补码 [x]补 = 1,0000000 表示 x = -27,补码中最小的数
若机器字长n+1位,补码整数的表示范围:−2n ≤ x ≤ 2n −1 (比原码多表示一个 −2n ) 定点小数补码 [x]补 = 1.0000000 表示 x = -1 若机器字长n+1位,补码小数的表示范围:−1 ≤ x ≤ 1−2-n (比原码多表示一个 −1 ) 补码的基础上将符号位取反
移码全0真值最小,移码全1真值最大;移码表示的整数很方便对比大小移码的真值0只有一种表示形式
符号位、数值位全部取反,末位+1
同[x]原求[x]补
负数补→原:①数值位取反+1;
或 ②负数补码中,最右边的1及其右边同原码。最右边的1的左边同反码符号位保持不变,仅对数值位进行移位。
正数的原码、补码与反码都相同,因此移位后出现的空位均以0添之。
反码的算数移位――负数的反码数值位与原码相反,因此负数反码的移位运算规则如下,
右移:高位补1,低位舍弃。
左移:低位补1,高位舍弃。
补码的算数移位――负数补码=反码末位+1导致反码最右边几个连续的1都因进位而变为0,直到进位碰到第一个0为止。
规律――负数补码中,最右边的1及其右边同原码。最右边的1的左边同反码 负数补码的算数移位规则如下:右移(同反码):高位补1,低位舍弃。
左移(同原码):低位补0,高位舍弃。
逻辑右移:高位补0,低位舍弃。
逻辑左移:低位补0,高位舍弃。
对于补码来说,无论加法还是减法,最后都会转变成加法,由加法器实现运算,符号位也参与运算
。补码运算回原码就是我们真正计算的值
,当然可能会发生溢出。
只有“正数+正数 ”才会上溢(正溢出) —— 正+正=负
只有“负数+负数 ”才会下溢(负溢出) —— 负+负=正
不改变数据内容,改变解释方式
。
高位截断,保留低位。
符号扩展。见本节4.4
转载地址:http://qzmzi.baihongyu.com/