n位的二进制可以表示多少个小数?

导论

首先来思考一个十进制小数是如何被转化成二进制的。它使用的方式:乘基取整。你想把它化成n进制,基数就是n。以小数0.6875为例,将它化成二进制
在这里插入图片描述
那么它化成二进制0.1101。以原码或补码表示成01101
并不是每一个十进制小数都可以化成2进制,根据小数转化成二进制的规则来看,如果一个小数 ✖有限个2,能够变成一个整数,那么这个小数就可以用二进制来表示

例如,0.3不管它✖多少个2,都没有办法变成整数,这个“乘基取整”的过程就没有出口,所以0.3不能用二进制表示。
在这里插入图片描述
另外,根据“乘基取整”的规则来看,小数乘了多少个2,那么它就用多少个二进制表示。

推理过程

根据上面导论里得出来的两个结论,进行推导。

  • 如果一个小数 ✖有限个2,能够变成一个整数,那么这个小数就可以用二进制来表示
  • 小数乘了多少个2 变成了整数,那么它就用多少个二进制表示。

以数学角度来说,一个小数m∈(0, 1),乘以n个2,可以变成整数N,那么这个小数就可以用n位的二进制表示出来。根据题意可以列出表达式

m × 2 n = N m × 2^n =N m×2n=N
小数 × 2 n = 整数 小数 × 2^n =整数 小数×2n=整数
即上述这个等式如果成立,小数m就可以用n位的二进制表示,那么就有如下过程:
0 ≤ m = N 2 n < 1 0 \leq m = \frac{N}{ 2^n} < 1 0m=2nN<1
0 ≤ 小数 = 整数 2 n < 1 0 \leq 小数 = \frac{整数}{ 2^n} < 1 0小数=2n整数<1
因为m是小数,我们可以列出上述不等式。
0 ≤ N < 2 n 0 \leq N < 2^n 0N<2n
0 ≤ 整数 < 2 n 0 \leq 整数 < 2^n 0整数<2n
N仅仅规定是整数,N可以是0、1、2、… 、2n-1 ,即m有2n个可能值。
所以n位的二进制可以表示2n个小数


1位二进制,可以表示多少个小数:
0 ≤ m = N 2 1 < 1 0 \leq m = \frac{N}{ 2^1} < 1 0m=21N<1

0 ≤ N < 2 1 0 \leq N < 2^1 0N<21

且N是整数,N可以是0、1。
1位二进制可以表示 20 个小数


2位二进制,可以表示多少个小数:
0 < m = N 2 2 < 1 0 < m = \frac{N}{ 2^2} < 1 0<m=22N<1

0 < N < 4 0 < N < 4 0<N<4
且N是整数,N可以是0、1、2、3。
2位二进制可以表示 22 个小数


3位二进制,可以表示多少个小数:
0 < m = N 2 3 < 1 0 < m = \frac{N}{ 2^3} < 1 0<m=23N<1

0 < N < 2 3 0 < N < 2^3 0<N<23
且N是整数,N可以是0、1、2、……、23-1。
3位二进制可以表示 23 个小数


结论

综上,不考虑符号位,n位的二进制可以表示2n个小数

练习

对于相同位数(设为N位,不考虑符号位)的二进制补码小数和十进制小数,二进制小数能表示数的个数/十进制小数所能表示数的个数为________.

解答:
不考虑符号位,N位的二进制可以表示2N个小数。
而不考虑符号,N位的十进制小数,能够表示10N个小数。例如,3位小数部分,最大可以表示0.999,那么可以表示的范围是 0~0.999,一共可以表示10N个小数。
所以 二进制小数所能表示数的个数 十进制小数所能表示数的个数 = 2 N 1 0 N = ( 0.2 ) N \frac{二进制小数所能表示数的个数}{ 十进制小数所能表示数的个数} = \frac{2^N}{10^N} =(0.2)^N 十进制小数所能表示数的个数二进制小数所能表示数的个数=10N2N=(0.2)N

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小酥诶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值