机器数的表示及运算

机器数为符号数值变化的数

0 表示 “+” ; 1 表示“-”

  • +00 1010 B 十进制表示为 +21 计算机中表示为: 0001 0101 B

  • -00 1010 B 十进制表示为 -21 计算机中表示为: 100 1010 B

由“ + ”、“ - ” 表示正负的数称之为机器数的真值(+ 00 1010 B, -001 0101 B)

由“ 0 ” 、“ 1 ”表示正负的数称之为机器数 (000 1010 B,1001 0101 B)

机器数: 符号位 + 真值

机器数的三种表示方法:原码、反码、补码

原码

原码:最高位表示符号,其余位为真值 (0 为正,1 为负)

真值x得到原码记为[x] ,[x] = 符号位+|x|y

例: 1、 [+5] = 0101 B [-5] = 1101 B

2、 X = -101 B ; y = 1101 B 求[x] [y] :[x] =1101 B ; [y] = 01100 B

注: 在源码表示中无论正负,数值部分保持真值不变

原码中0有两种表示形式: +0 , -0 (八位):

[+0] =0000 0000 B

[-0] = 1000 0000 B

反码

反码: 正数反码与原码相同;负数反码部分为真值的各位按位取反

真值x的反码记为:[x] ,最高位为符号位(0为正,1为负)

例:1、 [+5] = 0101 B ; [+5] = 0101 B

[-5] = 1101 B ;[-5] = 1010 B

2、 x = -0 ; y = +0 求[x];[y]

[x] = 1000 0000 B ; [x] = 1000 0000 B

[y] = 0000 0000 B ; [y] = 1111 1111 B

补码

补码:正数与原码相同, 负数数值部分为真值的各位按位取反再加1

真值x的补码记为[x] ,最高位为符号为(0为正,1为负)

例:1、 [+5] = 0101 B ; [+5] = 0101 B ; [+5] = 0110 b

[-5] = 1101 B ;[-5] = 1010 B ; [-5] = 1011 B

2、 x = -0 ; y = +0 求[x];[y]

[x] = 1000 0000 B ; [x] = 1000 0000 B ; [x] = 0000 0000 B

[y] = 0000 0000 B ; [y] = 1111 1111 B ;[y] = 1111 1111 B

机器数补码最稳定

例 -5 + 8 = 3

[-5] = 10101 B ; [8] = 01000 B

[-5] +[8] = 1101 B -13 (提出反码)

[-5] = 11010 B ; [8] = 01000 B

[-5] + [8] = 00010 B +2 (提出补码)

[-5] = 11010 B ; [8] = 01001 B

[-5] + [8] = 00011 B +3 (补码最稳定)

八位二进制数表示则[x] 原(反、补) = 符号位 + 真值 = 八位;如果没说八位则符号位+ 真值

正数的原码、反码、补码相同

练习

1、 写出1与-1的原码、反码、补码

[1] = 0000 0001 B [-1] = 1000 0001 B

[1] = 0000 0001 B [-1] = 1111 1110 B

[1] = 0000 0001 B [-1] = 1111 1111 B

2、 十进制数-13的八位二进制补码是 1111 0011 B

有符号数的范围

8位机器数 16位机器数
最大 0111 111 B 0111 1111 1111 1111 B
最小 1111 1111 B 1111 1111 1111 1111 B
范围 [-127,127] [-32767,32767]
原码范围 [-127,127] [-32767,32767]
反码范围 [-127,127] [-32767,32767]
补码范围 [-128,127] [-32768,32767]

无符号数范围

8位二进制 16位二进制
最大 1111 1111 B 1111 1111 1111 1111 B
最小 0000 0000 B 0000 0000 0000 0000 B
范围 0 ~255 0~ 65535

练习

1、 补码表示中8位有符号数表示范围**[-128 ,127]**

2、 十进制数-126 的八位二进制补码为 1000 0010 B

3、 计算机中有符号数最常用的表示方法是 反码

[y] →[-y] : 各位取反(包括符号位),末位加1

例: [1] = 0000 0001 B 写出-1 的补码 : [-1] = 1111 1111 B

给定反码、补码 求真值

补码: 0100 1010 B (正数) 1111 1010 B (负数)

反码: 0100 1010 B 1111 1001 B

原码: 0100 1010 B 1000 0110

真值; 74 -6

有符号的运算y

[x] + [y] = [x] + [y]

[x] - [y] = [x]- [y]

例: 1、 已知A =+01011 B ; B = + 00001 B 求A+ B

[A] = 0000 1011 B ; [B] = 0000 0001 B

[A] = 0000 1011 B ; [B] = 0000 0001

[A] + [B] = 0000 1100 B

2、 计算 18-6

[18] = 0001 0010 B ; [18] = 0001 0010 B

[-6] = 1000 0110 B ; [-6] = 1111 1010 B

[18] + [-6] = 0000 1100 B 十进制为12