1、把下面给出的几个十进制的数化成二进制的数(无法精确表示时,小数点后取3位)、八进制的数、十六进制 的数: 7+3/4, -23/64, 27.5, -125.9375, 5.43
解 :
(1)17+3/4=(111)2+(11)2/(100)2=(111.11)2=(7.6)8=(7.C)16
提示: 3/4不必转化成小数再用乘2取整法转换为二进制小数,直接将11的小数点左移两位即得0.11;
(2)2-23/64=(-10111)2/26=(-0.010111)2=(-0.27)8=(-0.5C)16;
(3)327.5=(11011.1)2=(33.4)8=(1B.8)16;
(4)4-125.9375=(-1111101.1111)2=(-175.74)8=(-7B.F)16;
(5)5.43=(101.011)2=(5.3)8=(5.6)16;
2. 把下面给出的几种不同进制(以下标形式给出在右括号之后)的数化成十进制的数:
(1010.0101)2, -(101101111.101)2, (23.47)8, -(1A3C.D)16
解:(1)(1010.0101)2=10.3125;
(2)-(101101111.101)2=-367.625;
(3)(23.47)8=2×8+3+4×8-1+7×8-2=19+0.5+0.1094=19.6094;
(4)-(1A3C)16=-(1×163+10×162+3×16+12+13×16-1)=-6716.8125;
3.完成下面几个二进制的数的算术运算:
1010.111+0101.101, 1010.111-0101.101,
1110*0101, 10111101/1101
解:(1)1010.111+0101.101=10000.100
(2)1010.111-0101.101=101.010
(3)1110*0101=1000110
(4)10111101/1101=1110.100
4.回答奇偶校验码的用途是什么?写出下面几个二进制数的奇,偶校验码的值: 01010111 11010100
答:奇偶校验码是一种能发现数据编码中一位错或奇数个位出错的一种编码,常用于存储器读写检查或ASCII字符及其它类型信息传送过程中的出错检查.
(1)数据01010111的奇校验码为001010111,偶校验码为101010111;
(2)数据11010100的奇校验码为111010100,偶校验码为011010100.
5.写出下面2组数的原、反、补码表示,并用补码计算每组数的和、差。双符号位的作用是什么?它只出现在什么电路之处?
解:(1)x=0.1101 y=-0.0111 设符号位为双符号位
则 [x]原=[x]补=[x]反=00 1101=00 1101=00 1101
[y]原=11 0111 [y]反=11 1000
[y]补=11 1001 [-y]补=00 0111
[x]补+[y]补=00 1101+11 1001=00 0110
故x+y=0.0110
[x-y]补=[x]补+[-y]补=00 1101+00 0111=01 0100 结果错误,正溢出
(2) x=10111101 y=-00101011 设符号位为双符号位
则 [x]原=[x]补=[x]反=00 10111101
[y]原=11 00101011 [y]反=11 11010100
[y]补=11 11010101 [-y]补=00 00101011
[x]补+[y]补=00 10111101+11 11010101=00 10010010
故x+y= 10010010
[x-y]补=[x]补+[-y]补=00 10111101+00 00101011 =00 11101000
故x-y= 11101000
双符号位用于简化补码加减运算时的判别溢出,它只出现在ALU的符号运算之处。
6. 写出[X]移=10111101和[Y]移=00101011所代表的实际值。说明移码的使用场合;计算二移码数的和、差。
解:[x]移=10111101=27+x \ x=(0111101) 2=(61)10
[y]移=00101011=27+y \ [y]补=10101011
\y=(-1010101) 2=(-85)10
移码只用于浮点数中的阶码表示。
[x]移+[y]移=10111101+00101011=11101000
对运算结果要加27进行修正得01101000,即十进制-24
[x]移+[-y]移=10111101+11010101=10010010
对运算结果要加27进行修正得00010010 发生了溢出
7.仿照计算机的计算过程,用原码计算在11题的第(1)小题给出的2个定点小数和乘积。
x=0.1101 y=-0.0111计算过程参照教材83页,
X*Y最终结果为 -0.01011011 ;
8.依照计算机的计算过程,用原码计算在11题的第(1)小题给出的2个小数Y/X的商和正确的余数。
解:计算过程参照教材89页,Y/X 最终结果为 -0.1000, 余 0.1000*2-4 ;
9.假定X=0 .0110011*211,Y=0.1101101*2-10(此处的数均为二进制),
浮点数阶码用4位移码、尾数用8位原码表示(含1位符号位),写出该浮点数能表示的绝对值最大、最小的(正数和负数)数值;
(1) 写出X,Y的正确的浮点数表示(注意,此处预设了个小陷阱);
解:尾数用8位原码表示该浮点数能表示的
最大的正数 0.1111111*27
最小的正数 0.1000000*2-7
绝对值最大的负数 -0.1111111*27
绝对值最小的负数 -0.1000000*2-7
[X]浮: 0 1010 1100110 (经过规格化处理)
符号位 阶码 尾数
[Y]浮: 0 0110 1101101
符号位 阶码 尾数
(2) 计算X+Y;
答案 第一步:求阶差: │ΔE│=|1010-0110|=0100
第二步:对阶:Y的阶码小, Y的尾数右移4位
[Y]浮变为 0 1 010 0000110
暂时保存
第三步:尾数相加,采用双符号位的补码运算
00 1100110
+00 0000110
______________
00 1101100
第四步规格化:满足规格化要求
第五步:舍入处理,采用0舍1入法处理
故最终运算结果的浮点数格式为: 0 1 010 1101101,
即X+Y=+0. 1101101*210
(3) 计算X*Y
答案 X=0 .0110011*211,Y=0.1101101*2-10
[X]浮: 0 1 010 1100110
[Y]浮: 0 0 110 1101101
符号位 阶码 尾数
第一步:阶码相加
[Ex+Ey]移=[Ex]移+[Ey]补=1 010+1 110=1 000 为移码表示的0
第二步:原码尾数相乘的结果为:0 10101101101110
第三步:规格化处理:已满足规格化要求,不需左规,尾数不变,阶码不变。
第四步:舍入处理:按舍入规则,加1进行修正
所以 X*Y= 0.1010111*2+000