原码、反码、补码的转换:
1、先把数值转换成对应的二进制数;(进制转换);
2、再将数值转换成对应的补码形式存储;
①如果数值是正数,原码、反码、补码相同;
②如果是负数,先将其转换为反码(符号位(即最高位)不变,其他位取反的结果),最后转为补码(反码后边+1);
比如:(拿八位表示的)
7的原码 ===> 0000 0111 反码、补码 ===> 0000 0111
-7的原码 ===> 1000 0111 反码 ===> 1111 1000 补码 ===> 1111 1001
运算的基本关系式
下面是拿5位表示计算的几个例子:
两数相加:
1> x = 3,x补 = 0 0011 2> x = -3,x补 = 1 1101 y = 2,y补 = 0 0010 + y = -2,y补 = 1 1110 +----------------------- -----------------------0 0101(+5的补码) 1 1101(-5的补码)3> x = 3, x补 = 0 0011 4> x = -3,x补 = 1 1101 y = -2,y补 = 1 1110 + y = 2,y补 = 0 0010 +----------------------- -----------------------0 0001(+1的补码) 1 1111(-1的补码)
两数相减:
1> x = 4,x补 = 0 0100 2> x = -4,x补 = 1 1100 y = -5, y = 5,-y = 5 y补 = 0 0101 + -y = -5, y补 = 1 1011----------------------- -----------------------0 1001(+9的补码) 1 0111(-9的补码)
⒈控制信号
+A :打开控制门,将A送入∑;+B :打开控制门,将B送入∑;— —+B :打开控制门,将B送入∑;+1:控制末位+1
加法输出端:
∑→A:打开控制门,将结果送A输入端;
CPA:将结果打入A;
⒉逻辑图
还是5位表示数字,以下是几个例子:
1> x = 10,x补 = 0 1010 2> x = -10,x补 = 1 0110 y = 7, y补 = 0 0111 + y = -7, y补 = 1 1001 +----------------------- -----------------------1 0001(正溢出) 0 1111(负溢出)
正数补码移位规则:
1> 单符号位 2> 双符号位 0 0111 00 0111
← 0 1110 ← 00 1110
→ 0 0111 ← 01 1100
→ 0 0011
符号位不变,(单符号位:符号位不变;双符号位:第一符号位不变,第二符号位可以暂存进位,但是结果符号位只能是00或11),空位补0;
负数补码移位规则:
1> 单符号位 2> 双符号位 1 1011 11 0110
← 1 0110 ← 10 1100
→ 1 1011 → 11 0110
→ 1 1101 → 11 1011
符号位不变,(单符号位:符号位不变;双符号位:第一符号位不变,第二符号位可以暂存进位,但是结果符号位只能是00或11),左移空位补0,右移空位补1;
例子:
保留4位位数:
0舍1入法:
0 00100 → 0 0010
1 00101 → 1 0011
1 11011 → 1 1110末位置1法:
0 00100 → 0 0011
1 00101 → 1 0011
1 11011 → 1 1101
参考:链接
浮点数,就是小数点位置不确定的数,为何不确定呢,那看你的读法了,比如3.9×10²你也可以看做是0.39×10³,浮点数的相关表示表示和计算直接看题吧:
先要了解这个:
在754标准中,一个规格化的32位浮点数x的真值表示为:
x = (-1)s×(1.M)×2(E-127); e = E-127
一个规格化的64位浮点数x的真值为:
x = (-1)s×(1.M)×2(E-1023); e = E-1023
s就看当前数字是正还是负了,正的话s = 0,负的话s = 1;
一、将下列十进制数表示成IEEE754标准的32位浮点规格化数。
(1) 27/64
解:27/64=0.421875
(0.421875)10=(0.011011)2
E=-2+127=125=01111101
S=0
M=1011 0000 0000 0000 0000 000
有:0 01111101 10110000000000000000000
当然,你还有这么算:
27的二进制数是:11011
1/64就是:2-6
于是:27/64 ===> 11011×2-6 ====> 0.011011
后面都一样了;
(2) -27/64
解:27/64=0.421875
(0.421875)10=(0.011011)2
E=-2+127=125=01111101
S=1
M=1011 0000 0000 0000 0000 000
有:1 01111101 10110000000000000000000
二、已知X和Y, 用变形补码计算X+Y, 同时指出运算结果是否溢出。
(1)X=11011 Y=00011
解:[X]补=0011011 [Y]补=0000011[X]补 0011011
+ [Y]补 0000011
------------------[Y+X]补 0011110没有溢出(2)X= 11011 Y= -10101
解:[X]补=0011011[Y]补=1101011[x]补 0011011
+ [Y]补 1101011
--------------------------
[Y+X]补 0000110
没有溢出(3)X=-10110 Y=-00001
解:[X]补=1101010 [Y]补=1111111[X]补=1101010
+ [Y]补=1111111
----------------------------
[Y+X]补 1101001
没有溢出
三、设阶码为3位, 尾数为6位。按浮点运算方法, 完成下列取值的[X+Y],[X-Y]运算:
(1)X= 2-011×0.100101 ,Y= 2-010×(-0.011110)解: [x]浮 = 11101,0.100101 [y]浮 = 11110,-0.011110 Ex-Ey = 11101+00010=11111 [x]浮 = 11110,0.010010(1)
X+Y:0 0. 0 1 0 0 1 0 (1)
+ 1 1. 1 0 0 0 1 0
-------------------------------
1 1. 1 1 0 1 0 0 (1) 规格化处理: 1.010010 阶码: 11100 x+y= 1.010010*2∧-4 = 2∧-4*-0.101110
X-Y:0 0. 0 1 0 0 1 0 (1)
+ 0 0. 0 1 1 1 1 0
--------------------------------
0 0 1 1 0 0 0 0 (1)
规格化处理: 0.110000
阶码 : 11110
x-y=2∧-2*0.110001