10进制转2进制但是遇到小数点后算不完

来源:百度知道 编辑:UC知道 时间:2024/06/07 20:09:28
25.625分解为:
25/2=12......1
12/2=6 ......0
6/2=3 ......0
3/2=1 ......1
1/2=0 ......1
整数部分是11001,
0.625*2=1.25
0.25 *2=0.5
0.5 *2=1.0
小数部分是101。

96.708分解:
96/2=48----0
48/2=24----0
24/2=12----0
12/2=6-----0
6/2=3------0
3/2=1------1
1/2=0------1
整数部分是1100000,
0.708x2=1.416
0.416x2=0.832
0.832x2=1.664(为什么这里又产生有个位的数字?要怎么办难道继续算下去,算不完怎么办?)
如果是96.7,那么小数部分还是出现前三个数字雷同,但它们在十进制里相差了0.008
0.7x2=1.4
0.4x2=0.8
0.8x2=1.6
我就想知道遇到小数算不完时,怎么办?
如果是小数能算得完的,算到什么时候才可以停?

然后,听说电脑只会二进制,那从96.708到96.7中间的数字电脑不就无法正确辨别了吗?

打个比方 10进制数:小数位精度为2,那么1.234,就无法表达,因为只能表达0.01*N的数;
类似的 2进制数:小数位精度为2,因为(2)0.01=(10)0.25,那么它就只能表示0.25*N的数.

再来看96.708到96.700之间的数
(10进制,精度3)那么可以区分出96.701~96.707七个数
(2进制,精度8)//2^-8=0.00390625,那么就可以区分出96.70390625这一个数
由高等数学知所有无理数都是有理数的极限,所以任何进制都有无理数
所以只要精度(也就是小数点后的位数)足够大,任何数都是可以表示的(但不代表写得完)
总之,确实有的数算不完,而精度越大的电脑,可以区分的数就越多(N位精度的2进制数,即把1平均分成
2^N分,每个小数之间相差1/(2^N),而N位精度的10进制数,每个小数相差0.0...01(N-1个0))。

①十进制整数转换成二进制整数(除基(2)取余法)

[例]

2 1993

2 996 …………1…………0位 低位二进制整数

2 498 …………0…………1位

2 249 …………0…………2位

2 124 …………1…………3位

2 62 …………0…………4位

2 31 …………0…………5位

2 15 …………1…………6位

2 7 …………1…………7位

2 3 …………1…………8位

2 1 ……