二进制文件里为什么是小数
A. 二进制小数如何表示
首先,给出一个任意实数,例如0.6,文字描述该过程如下:
将该数字乘以2,取出整数部分作为二进制表示的第1位;然后再将小数部分乘以2,将得到的整数部分作为二进制表示的第2位;以此类推,知道小数部分为0。
特殊情况:小数部分出现循环,无法停止,则用有限的二进制位无法准确表示一个小数。
下面具体计算一下0.6的小数表示过程
0.6 * 2 = 1.2 ——————- 1
0.2 * 2 = 0.4 ——————- 0
0.4 * 2 = 0.8 ——————- 0
0.8 * 2 = 1.6 ——————- 1
0.6 * 2 = 1.2 ——————- 1
…………
可以发现在该计算中已经出现了循环,0.6用二进制表示为 1001 1001 1001 1001 ……
如果是10.6,那个10.6的完整二进制表示为 1010.100110011001……
(1)二进制文件里为什么是小数扩展阅读
小数的二进制计算
十进制小数转换成二进制小数采用“乘2取整,顺序排列”法。具体做法如下:
用2乘十进制小数,可以得出积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。然后把取出的整数部分按顺序排列起来。
先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
B. 二进制除了有1和0还有小数点吗 似乎没有吧 可是这题有!
二进制只能用0和1表示。二进制的转换中,整数与小数分别转换。以二进制与十六进制之间转换来说,转换方法为:以小数点为界,分别向左右每四位二进制合成一位十六进制数,或每一位十六进制数展成四位二进制数,不足四位者补0。所以,
(0101.0010)2=(5.2)16
(101101101001011.01101)2=(0101 1011 0100 1011.0110 1000)2=(5B4B.68)16
(ABCD.EF)16=(1010 1011 1100 1101.1110 1111)2
C. 二进制打开Exe文件,每个字符中间有个小数点,什么意思
程序定义的字符是宽字符,一个字符占两个字节,另一个字节为00,在UltraEdit或反汇编程序窗口中,一般不可显示字符(0~31)都显示为小数点,这是"我使用UltraEdit打开生成的EXE发现每个X中间都有一个.(小数点),当"的原因
当你用编程方式改字符串时,你可能是按单字节方式修改的,这样原来的字符 00 X 被你强制改成了X X,因你只是改数据,程序当然能运行,只是系统不识别X X编码,看来就是乱码了
我使用UE再次打开程序,发现新的字符串中间没有.(小数点),新的字符串长度为20, 弹窗的内容却是(乱码+10个X).我不知道为什么?-----因你修改的原因
D. 二进制中,小数点后的数是什么意思
用二进制表示小数是非常复杂的,很少这么用。需要小数时,我们一般也用整数表示,例如整数100代表1,整数10代表0.1,整数1代表0.01,就是把整数数值除以100,得到2位小数。
E. 二进制有没有小数,如果有怎么转换成十进制
二进制中有小数呀!带小数的二进制转换成十进制的要求就是使用这个公式:S=Kn×2(n)+K(n-1)×2(n-1)+K2×2(2)+K1×2(1)+K0×2(0)+K-1×2(-1)+K-2×2(-2)我写的括号中的内容是2的次方。也就是小数点前边的数使用的是正次方,而小数点后面的数使用的是负次方。将二进制小数代入这个公式就可以了。
F. 二进制后面的小数点怎么算
二进制转十进制:
个位上的数字的次数是0,十位上的数字的次数是1,......,依次递增,而十分位的数字的次数是-1,百分位上数字的次数是-2,......,依次递减。
如:
计算机中的十进制小数用二进制通常是用乘二取整法来获得的。
比如0.65换算成二进制就是:
0.65
×
2
=
1.3
取1,留下0.3继续乘二取整
0.3
×
2
=
0.6
取0,
留下0.6继续乘二取整
0.6
×
2
=
1.2
取1,留下0.2继续乘二取整
0.2
×
2
=
0.4
取0,
留下0.4继续乘二取整
0.4
×
2
=
0.8
取0,
留下0.8继续乘二取整
0.8
×
2
=
1.6
取1,
留下0.6继续乘二取整
0.6
×
2
=
1.2
取1,留下0.2继续乘二取整
.......
一直循环,直到达到精度限制才停止(所以,计算机保存的小数一般会有误差,所以在编程中,要想比较两个小数是否相等,只能比较某个精度范围内是否相等。)。这时,十进制的0.65,用二进制就可以表示为:0.1010011。
(6)二进制文件里为什么是小数扩展阅读:
1、二进制优点:
数字装置简单可靠,所用元件少;
只有两个数码0和1,因此它的每一位数都可用任何具有两个不同稳定状态的元件来表示;
基本运算规则简单,运算操作方便。
2、二进制缺点:
用二进制表示一个数时,位数多。因此实际使用中多采用送入数字系统前用十进制,送入机器后再转换成二进制数,让数字系统进行运算,运算结束后再将二进制转换为十进制供人们阅读。
二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。
我们也一样,只要学完这一小节,就能做到。
首先我们来看一个二进制数:1111,它是多少呢?
你可能还要这样计算:1
×
2º
+
1
×
2¹
+
1
×
2²
+
1
×
2³
=
1
×
1
+
1
×
2
+
1
×
4
+
1
×
8
=
15。
然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为2³
=
8,然后依次是
2²
=
4,2¹=2,
2º
=
1。
记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。
参考资料:
搜狗网络-二进制
G. 二进制可以带小数点吗
可以有,比如我在用STM32F103处理器时,在UART中设置波特率时,有个分频的寄存器USART_BRR的位[15:4]用来存放分频的整数部分,位[3:0]用来存放分频的小数部分,这个整数和小数部分都要转换为十六进的整数和小数.至于2或16进制和10进制小数的转换,网络搜索就知道了
当然这是ST公司本身就规定好的。但是一般程序中没这种2进制直接带小数的,都是需要在人为知道某种约定下进行。
可能有点答非所问