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

文章目录

    • 导论
    • 推理过程
    • 结论
    • 练习

导论

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

例如,0.3不管它✖多少个2,都没有办法变成整数,这个“乘基取整”的过程就没有出口,所以0.3不能用二进制表示。
n位的二进制可以表示多少个小数?_第2张图片
另外,根据“乘基取整”的规则来看,小数乘了多少个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

你可能感兴趣的:(笔记,笔记,考研,学习方法)