简单来说:
1)当真数为正数时,原码、反码和补码的表示形式相同,符号位为 "0",数值位和真值相同;
2)当真值位负数时,原码、反码和补码的表示形式不相同,符号位为 "1",并且对于数值部分:补码是原码的”取反加1“,反码是原码的“每位取反”;
3)对于同一个真值,补码和反码只差一个符号位;
4)移码只表示整数
5)对于不同的机器数表示 ±0,其形式不同:
[+0]原 ≠ [-0]原
[+0]补 = [-0]补
[+0]反 ≠ [-0]反
[+0]移 = [-0]移
大致的基本知识就是上述这些,如果读者还想了解更多的话,请耐心阅读下面的内容;
如果还满意的话,麻烦为这篇文章点个赞!!!谢谢!!!
原码的定义:
[X]源 =
整数时:
0 ,X ( 2n > X ≥ 0 )
2n-X ( 0 ≥ X > -2n )
X为真值,n为整数的位数
例如:
x = +1110 [x]原 = 0,1110
x = -1110 [x]原 = 24 - (-1110) = 1,1110
小数时:
X ( 1 > X ≥ 0 )
1-X ( 0 ≥ X >-1 )
X为真值
例如:
x = +0.1101 [x]原 = 0.1101
x = -0.1101 [x]原 = 1 - (-0.1101) = 1.1101
小测试:
1.已知[x]原 = 1.0011 求x
解:x = 1 - [x]原 = 1 - 1.0011 = -0.0011
2.已知[x]原 = 1,1100 求x
解: x = 24 - [x]原 = 10000 - 1,1100 = -1100
3.已知[x]原 = 0.1101 求x
解:x = +0.1101
4.求 x=0 的原码
解: 设 x = +0.0000 [+0.0000]原 = 0.0000
设 x = -0.0000 [-0.0000]原 = 1.0000
故:[-0]原 ≠ [+0]原
对于整数:[+0]原 = 0,0000
[-0]原 = 1,0000
总结:
优点:表示方法简单,直观
缺点:不适合运用于加减运算,需要判断正负、确定前后位置、判断结果符号····
规定:用小数点 "." 将符号位和数值位隔开的机器数一律为小数;
用逗号 "," 将符号位和数值位隔开的机器数一律位整数; (参照上面例子)
补码:
补数表示法:
一个负数可以用其正的补数来代替,这个正的补数可以用此负数加模来求得。
一个正数和负数互为补数时,他们的绝对值之和就是模。
正数的补数就是它本身。
性质:补码的和等于和的补码
6 - 3 = [ [6-3] ]补 = [ [6] + [-3] ]补 = [0,110 + 1,101]补
= [10,011]补
= [ 0,011 ]补
= 3
补码的定义:
[X]补 =
整数时:
0,X ( 2n > X ≥ 0 )
2n+1 + X ( 0 > X ≥ -2n )
(mod 2n+1)
X为真值,n为整数位数(不包括符号位)
例如:
x = +1010 求x的补码。
解:[x]补 = 0,1010
x = -1011000 求x的补码。
解:[x]补 = 27+1 = (-1011000)
= 100000000
- 1011000
1,0101000
小数时:
X ( 1 > X ≥ 0 ) (X为真值)
2+X (0 > X ≥ -1 ) (mod 2)
例如:
x = +0.1110 [x]补 = 0.1110
x = -0.1100000 [x]补 = 2 + (-0.1100000)
=10.0000000
- 0.1100000
1.0100000
总结补码计算方法:
1.补码 = 反码 + 1
2.负数补码求法:符号位不变,数值位从左到右依次取反,最右边的1及其后的0不变
例如: x = -0.1100100 ---> x = 1.0011100
3.补码的补码是原码
移码:
补码表示很难判断其真值的大小
十进制 | 二进制 | 补码 |
x = +21 | +10101 | 0,10101 |
x = -21 | -10101 | 1,01011 |
x = +31 | +11111 | 0,00001 |
x = -31 | -11111 | 1,00001 |
x + 25
x = +21 | +10101 + 100000 | =110101 |
x = -21 | -10101 + 100000 | =001011 |
x = +31 | +11111 +100000 | =111111 |
x = -31 | -11111 + 100000 | =000001 |
1的个数越多就大
移码的定义:
[X]移 = 2n + X (2n > X ≥ -2n)
X为真值,n为整数的位数。
移码和补码数值位相同,符号位相反
小测试:
x = 10100 [x]移 = 25 + 10100 = 1,10100
x = -10100 [x]移 = 25 - 10100 = 0,01100
特点:
1.[+0]移 = [-0]移
2.当x=5事,最小真值(-25 = -100000) 的移码全0 = 25 - 100000 = 000000