计算机组成原理之(二进制与十进制互相转换,数的定点表示与浮点数表示)例题:设浮点数字长16位,其中阶码5位(含有1位阶符),尾数11位(含有1位数符)

进制的转换

十进制转换二进制:

十进制数13=>二进制


方法一
13=23+22+20=8+4+1
因此二进制数为:1101
方法二
在这里插入图片描述
十进制数128=>二进制

方法一:128=27
所以二进制数为 100000000
方法二

加粗样式

十进制数 13 128 \frac{13}{128} 转换=>二进制

方法一:
13=13=23+22+20=8+4+1
因此二进制数为:1101
128=27所以二进制数为 100000000,所以分子小数点往左移动7位
所以 13 128 \frac{13}{128} =0.0001101

二进制转换十进制:

例如:01101011.转十进制:
第0位:1乘2的0次方=1
1乘2的1次方=2
0乘2的2次方=0
1乘2的3次方=8
0乘2的4次方=0
1乘2的5次方=32
1乘2的6次方=64
0乘2的7次方=0
然后:1+2+0
+8+0+32+64+0=107.
二进制01101011=十进制107

11转换十进制:
第0位:1乘2的0次方=1
第1位:1乘2的1次方=2
二进制11=十进制3

110转换十进制:
110=0 * 20+1 * 21+1 * 22=6

十六进制转换二进制:

首先把十六进制数中的每一位数转换为二进制数,每个数要分四位,不足四位的前面加零
我们看到 FD时,如何迅速将此16进制数转换为二进制数呢?
先转换F:
看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。
接着转换D
看到D,知道它是13,13如何用8421凑呢?应该是:8 + 4 + 1,即:1101。
所以,FD转换为二进制数,为:1111 1101

二进制转换十六进制:

记住8 4 2 1,对于任意一个4位的二进制数,我们都可以很快算出它对应的16进制值。
1111 = 8 + 4 + 2 + 1 = 15 =F
1110 = 8 + 4 + 2 + 0 = 14= E
1101 = 8 + 4 + 0 + 1 = 13= D
1100 = 8 + 4 + 0 + 0 = 12 =C
1011 = 8 + 0 + 2 + 1 = 11= B
1010 = 8 + 0 + 2 + 0 = 10 =A
1001 = 8 + 0 + 0 + 1 =9 =9
……
0001 = 0 + 0 + 0 + 1 = 1= 1
0000 = 0 + 0 + 0 + 0 = 0= 0
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。

定点表示

  • 纯小数:小数点位于数符和第一数值位之间时,机器内的数为纯小数,表示范围:-(1-2-n)~(1-2-n)
  • 纯整数:小数点位于数值位之后,表示范围:-(2n-1)~(2-n-1)
  • 定点机:采用定点数的机器

浮点表示

通常浮点数别表示为:N=S*rj

  • S为尾数(可正可负)

  • j为阶码(可正可负)

  • r为基数(可以取2,4,8…)

  • 计算机规定浮点数尾数用纯小数形式
    例如:

    N=11.0101
    =0.110101 * 210
    =1.10101 * 21
    =0.00110101 * 2100

  • 所以 0.110101 * 210 ; 0.00110101 * 2100是可以采用的

  • 浮点数的规格化形式
    将尾数最高位为1的浮点数称为规格化数,即
    N= 0.110101 * 210为规格化数

  • 浮点数最大正数2(2m-1) * (1-2-n)

  • 浮点数最小正数2-(2m-1) * 2-n

  • 浮点数最大负数-2(2m-1) * (1-2-n)

  • 浮点数的上溢:浮点数阶码大于最大阶码,机器停止运算,进行中断溢出处理

  • 浮点数的下溢:浮点数阶码小于最小阶码,机器不停止运算,将尾数各位强制为0

浮点数的规格化:

将非规格化传化为规格化数的过程称为规格化

  • 左规:尾数左移一位,阶码-1
  • 右规:尾数右移一位,阶码+1

浮点数和定点数的比较:

  1. 位数相同时,浮点数表示范围大
  2. 浮点数为规格化数时,相对精度比定点高

例题一:

设浮点数字长16位,其中阶码5位(含有1位阶符),尾数11位(含有1位数符),将十进制数+ 13 128 \frac{13}{128} 写成二进制定点数和浮点数,并分别写出它在定点机与浮点机中的机器数形式。

答:令 X=+ 13 128 \frac{13}{128}

  • 二进制形式:x=0.0001101因为尾数为11位,所以后面补0:x=0.0001101000
  • 定点数形式:x=0.0001101000
  • 浮点数规格化表示: 0.1101000000 x 2-11

解析: 2-11中**-11**为二进制数字 ,转换为十进制为:-3 ;-11在机器中表示为1 0011

  • 定点机中 【x】原=【x】补=【x】反=0.0001101000
  • 浮点机中:在这里插入图片描述

    例题二:

    将十进制数-54表示成二进制定点数和浮点数,并写出它在定点机与浮点机中的机器数形式(其他要求同上例题)
    答:令x = - 54
    • 二进制形式:x=-110110
    • 定点数表示:x=-0000110110
    • 浮点数规格化表示:0.1101100000 x 2110

解析: 2110110二进制数字 ,转换为十进制为:6 ;110在机器中表示为0,0110

  • 定点机中:

  • (因为是负整数,所以符号码为1 ,并且用逗号隔开)
    【x】原=1, 0000110110
    【x】反=1,1111001001
    【x】补=1,1111001010

  • 浮点机中:

  • (阶码为110,所以在浮点机器表示0,0110)
    【x】原=0.0110;1.1101100000
    【x】反=0.0110;1.0010011111
    【x】补=0.0110;1.0010100000

    例题三:

    写出对应图的所示的浮点数的补码形式,设图中n=10,m=4,阶符 数符各取一位在这里插入图片描述

    • 最大正数:215 x (1-2-10) 补码:0,1111;0.1111111111

    • 最小正数:2-15 x (2-10) 补码:1,0001;0.0000000001

      例题四:

设浮点数字长16位,其中阶码5位(含有1位阶符),尾数11位(含有1位数符),将数- 53 512 \frac{53}{512} 对应的浮点规格化数的原码,补码反码 和阶码 用移码,尾数用补码的形式
答:
53转化为二进制数:110101
512转化为二进制数为:1000000000 ,29
因此x=- 53 512 \frac{53}{512} =- 0.000110101
所以他的浮点规格化数为:(-0.1101010000) x 2-11

解析: 2-11中**-11**为二进制数字 ,转换为十进制为:-3 ;-11在机器中表示为1,0011

  • 【x】原=1,0011;1.1101010000
  • 【x】反=1,1100;1.0010101111
  • 【x】补=1,1101;1.0010110000

解析: 同一个真值的移码和补码仅相差一个符号位,将补码的符号位由‘0’改为‘1’,或者由‘1’改为‘0,即可得到真值的移码

  • 【x】阶移,尾补=0,1101;1.0010110000
发布了58 篇原创文章 · 获赞 20 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40709110/article/details/101278540