《微机原理》习题2 (P40)参考答案为什么说计算机只能“识别”二进制数,并且计算机内部数的存储及运算也都采用二进制?解:因为二进制是计算机刚出现时就奠定的计算机内的进位记数制,之所以选用它来表示计算机内的信息,是因为两个状态的物理器件容易制造和实现,将这两个状态抽象为数字就可用0、1来表示;此外,采用二进制的运算规则较为简单,容易实现。
在进位记数制中,“基数”和“位权(或权)”的含义是什么?一个以b为基数的任意进制数N,它按位权展开式求值的一般通式是如何描述的?解:在进位记数制中,常常要用“基数”(或称底数)来区别不同的数制,而进位制的基数就是该进位制所用的字符或数码的个数。
在一个进位记数制中,每一位都有特定的权,称为位权或简称权。
每个位权由基数的 n次幂来确定。
数N的按位权展开式的一般通式为:N=±(k i×b i)式中,k i为第i位的数码;b为基数;b i为第位的位权;n为整数的总位数;m 为小数的总位数。
将下列十进制数分别转化为二进制数。
(1)147 (2)4095 (3) (4)解:(1) 147 D= B(2) 4095 D= B(3) D= B(4) D= B将下列二进制数分别转换为BCD码。
(1)1011 (2) (3) (4)解:(1) 1011 B=1×23+0×22+1×21+ 1×20=11 D=(0001 0001)BCD(2) B=1×2-2= D= 0101)BCD(3) B =1×24+1×22+1×20+1×2-1+1×2-3 = D=(0010 0010 0101)BCD(4) =1×24+1×23+1×21+1×20+1×2-3==(0010 0010 0101)BCD将下列二进制数分别转换为八进制数和十六进制数。
(1)B (2)11B (3) (4) .0011B解:(1) 1010 1011B=253Q=ABH(2) 10 1111 0011B=1363Q=2F3H(3) 1011B==(4) 1110 ==选取字长n为8位和16位两种情况,求下列十进制数的原码。
(1)X=+63 (2)Y=-63 (3)Z=+118 (4)W=-118解: (1) [X]原= [+63]原=0011 1111=0000 0000 0011 1111(2) [Y]原= [-63]原=1011 1111=1000 0000 0011 1111(3) [Z]原= [+118]原=0111 0110=0000 0000 0111 0110(4) [W]原= [-118]原=1111 0110=1000 0000 0111 0110选取字长n为8位和16位两种情况,求下列十进制数的补码。
(1)X=+65 (2)Y=-65 (3)Z=+127 (4)W=-128解:(1) [X]补=[+65]补=0100 0001=0000 0000 0100 0001(2) [Y]补=[-65]补=1011 1111=1111 1111 1011 1111(3) [Z]补=[+127]补=0111 1111=0000 0000 0111 1111(4) [W]补=[-128]补=1000 0000=1111 1111 1000 0000已知数的补码表现形式如下,分别求出数的真值与原码。
(1)[X]补=78H (2)[Y]补=87H (3)[Z]补=FFFH (4)[W]补=800H解:(1) ∵[X]补=78H=0111 1000 B ∴ [X]原=0111 1000 B=78H 真值X=120 D(2) ∵[Y]补=87H=1000 0111 B ∴ [Y]原=1111 1001 B=0F9H 真值Y=-121 D(3) ∵[Z]补=FFFH=1111 1111 1111 B (假设为12位补码)∴[Z]原=1000 0000 0001 B=801H 真值Z=-1 D(4) ∵[W]补=800H=1000 0000 0000 B (假设为12位补码)∴[W]原=不存在 W的真值 = -211 = -2048 D设字长为16位,求下列各二进制数的反码。
(1)X=00100001B (2)Y=-00100001B (3)Z=0B (4)W=-0B解:(1) ∵X= 0010 0001B=0000 0000 0010 0001B ∴[X]反=0000 0000 0010 0001B(2)∵Y=-0010 0001B=1000 0000 0010 0001B ∴[Y]反=1111 1111 1101 1110B(3)∵Z=0101 1101 1011B=0000 0101 1101 1011B ∴[Z]反=0000 0101 1101 1011B(4)∵W=-0101 1101 1011B=1000 0101 1101 1011B ∴[W]反=1111 1010 0010 0100B下列各数均为十进制数,试用8位二进制补码计算下列各题,并用十六进制数表示机器运算结果,同时判断是否有溢出。
(1)(-89)+67 (2)89-(-67)(3)(-89)-67 (4)(-89)-(-67)解:(1) [-89]补= 1010 0111 (2) [89]补= 0101 1001+ [ 67 ]补= 0100 0011 - [-67]补= 1011 1101[-89]补+[ 67 ]补= 1110 1010=[-16H]补 [89]补- [-67]补= 1001 1100=[-64H]补∴(-89)+67=-22=-16H ∴ 89-(-67)=156无溢出有溢出(3) [-89]补= 1010 0111 (4) [-89]补= 1010 0111- [ 67 ]补= 0100 0011 - [-67]补= 1011 1101[-89]补-[ 67 ]补= 0110 0100=[64H]补 [-89]补- [-67]补= 1110 1010=[-16H]补∴(-89)-67=-156 ∴ (-89)-(-67)= -16H=22有溢出无溢出分别写出下列字符串的ASCII码。
(1)17abc (2)EF98 (3)AB$D (4)This is a number 258解:(1) 17abc的ASCII码为 00110001 00110111 01100001 01100010 01100011B或31H 37H 61H 62H 63H(2) EF98的ASCII码为 01000101 01100110 00111001 00111000B或45H 66H 39H 38H(3) AB$D的ASCII码为 01000001 01000010 00100100 01000100B或41H 42H 24H 44H(4) This is a number 258的ASCII码为:54H 68H 69H 73H 20H 69H 73H 20H 61H 20H 6EH 75H 6DH 62H 65H 72H 20H 32H 35H 38H 设X=87H,Y=78H,试在下述两种情况下比较两数的大小。
(1)均为无符号数(2)均为带符号数(设均为补码)解:(1) ∵X=87H=1000 0111B=135D Y=78H=0111 1000B=128D∴ X>Y(2) ∵ X=87H=1000 0111B 为负数, Y=78H=0111 1000B 为正数∴ X<Y选取字长n为8位,已知数的原码表示如下,求出其补码。
(1)[X]原=01010101 (2)[Y]原= (3)[Z]原= (4)[W]原=解:(1) [X]补=0101 0101 (2) [Y]补=1101 0110(3) [Z]补=1000 0001 (4) [W]补=1111 1111设给定两个正的浮点数如下N1=2P1×S1 N2=2P2×S2(1)若P1>P2是否有N1>N2?(2)若S1和S2均为规格化的数,且P1>P2,是否有N1>N2?解:(1) ∵S1和S2可以是纯小数,也可以是纯整数∴不一定有N1>N2(2) 有N1>N2设二进制浮点数的阶码有3位、阶符1位、尾数6位、尾数1位,分别将下列各数表示成规格化的浮点数(补码表示)。
(1)X= B (2)Y= B (3)Z=-65/128 (4)W=+129/64解:(1) X==2+100×0.=20100×0.010********(2) Y==2+100×=20100×010********(3) Z=-65/128===2+000×=20000×00001011111(4) W=+129/64=+==2+010×0.00100100000阐述微型计算机在进行算术运算时,所产生的“进位”与“溢出”二者之间的区别。
解:“进位”与“溢出”的区别可以从两个方面讨论:(1)从定性的方面:任一个计数装置(如算盘、电子计算器,二进制的计数器等)都有固定的字长,其所记数据都有一定的表示范围。
在算术运算中,每一个相邻位之间都存在进位/借位现象,但是进位标志CF是特指运算中运算器中数据最高位向上的“进位/借位”现象。
当参加运算的数看作无符号数且运算结果超出无符号数表示范围时,就会产生“进位”或“借位”。
以8为二进制数无符号数为例,当加法运算结果超出255时产生进位;当减法运算的被减数小于减数时产生借位。
同理,当参加运算的数看作带符号数且运算结果超出带符号数表示范围时,就会产生“溢出”。
同样以8为二进制数带符号数为例,当运算结果超出-128~127的范围时就产生溢出。
因此,“进位”标志是针对无符号数的,“溢出”标志是针对带符号数的。
无论是无符号数还是出带符号数只要运算结果发生“进/借位”或“溢出”,运算器中都不能正确表示结果,即超出正常表示范围。
(2)从二进制运算的操作过程讨论:“进位”是指运算结果的最高位向更高位的进位。
如有进位,则C y=1;无进位,则C y=0。
当C y=1,即D7c=1时,若D6c=1,则V= D7c⊕D6c=1⊕1=0,表示无溢出;若D6c=0,则V=1⊕0=1,表示有溢出。
当C y=0,则D7c=0时,若D6c=1,则V=0⊕1=1,表示有溢出;若D6c=0,则V=0⊕0=0,表示无溢出。
选字长n为8位,用补码列出竖式计算下列各式,并且回答是否有溢出?若有溢出,回答是正溢出还是负溢出?(1)01111001+01110000(2)-01111001-01110001(3)01111100-01111111(4)-01010001+01110001解:(1) 0111 1001 (2) 1000 0111+ 0111 0000 + 1000 11111110 1001 1 0001 0110有溢出,且为正溢出有溢出,且为负溢出(3) 0111 1100 (4) 1010 1111+ 1000 0001 + 0111 00011111 1101 1 0010 0000无溢出无溢出若字长为32位的二进制数用补码表示时,试写出其范围的一般表示式及其负数的最小值与正数的最大值。