一. 理论知识
参照内容如下:3.数据表示
二. 具体运算
例1. 若机器字长n等于8,分别给出+1,-1,+127,-127,+45,-45,+0.5,-0.5的原码表示。
解: [ + 1 ] 原 = [+1]_原= [+1]原= 0 0000001; [ − 1 ] 原 = [-1]_原= [−1]原= 1 0000001;
[ + 127 ] 原 = [+127]_原= [+127]原= 0 1111111; [ − 127 ] 原 = [-127]_原= [−127]原= 1 1111111;
[ + 45 ] 原 = [+45]_原= [+45]原= 0 0101101; [ − 45 ] 原 = [-45]_原= [−45]原= 1 0101101;
[ + 0.5 ] 原 = [+0.5]_原= [+0.5]原= 0 ⋄ \diamond ⋄ 1000000; [ − 0.5 ] 原 = [-0.5]_原= [−0.5]原= 1 ⋄ \diamond ⋄ 1000000;(其中, ⋄ \diamond ⋄是小数点的位置)
说明: 最高位为符号位,0表示正号,1表示负号。该题机器字长为8,抛去符号位用剩余7位表示具体数值的二进制表示。
十进制转换为二进制采用基数乘除法:
- 整数部分采用除基取余法:
- 乘基取整法(小数部分的转换):
例2. 若机器字长n等于8,分别给出+1,-1,+127,-127,+45,-45,+0.5,-0.5的反码表示。
解: [ + 1 ] 反 = [+1]_反= [+1]反= 0 0000001; [ − 1 ] 反 = [-1]_反= [−1]反= 1 1111110;
[ + 127 ] 反 = [+127]_反= [+127]反= 0 1111111; [ − 127 ] 反 = [-127]_反= [−127]反= 1 0000000;
[ + 45 ] 反 = [+45]_反= [+45]反= 0 0101101; [ − 45 ] 反 = [-45]_反= [−45]反= 1 010010;
[ + 0.5 ] 反 = [+0.5]_反= [+0.5]反= 0 ⋄ \diamond ⋄ 1000000; [ − 0.5 ] 反 = [-0.5]_反= [−0.5]反= 1 ⋄ \diamond ⋄ 0111111;(其中, ⋄ \diamond ⋄是小数点的位置)
说明: 正数的反码和原码相同,负数的反码是其原码除符号位按位求反。
例3. 若机器字长n等于8,分别给出+1,-1,+127,-127,+45,-45,+0.5,-0.5的补码表示。
解: [ + 1 ] 补 = [+1]_补= [+1]补= 0 0000001; [ − 1 ] 补 = [-1]_补= [−1]补= 1 1111111;
[ + 127 ] 补 = [+127]_补= [+127]补= 0 1111111; [ − 127 ] 补 = [-127]_补= [−127]补= 1 0000001;
[ + 45 ] 补 = [+45]_补= [+45]补= 0 0101101; [ − 45 ] 补 = [-45]_补= [−45]补= 1 010011;
[ + 0.5 ] 补 = [+0.5]_补= [+0.5]补= 0 ⋄ \diamond ⋄ 1000000; [ − 0.5 ] 补 = [-0.5]_补= [−0.5]补= 1 ⋄ \diamond ⋄ 1000000;(其中, ⋄ \diamond ⋄是小数点的位置)
说明: 正数的补码和原码相同,负数的补码是其反码的末位加1。