小白问算法 怎么把十进制转化为2进制啊,带小数的,。。。。。。。。。。。。。。。。。。。。。。。。。。。
http://blog.sina.com.cn/s/blog_49cc616d01013wsf.html
人工转换的思路就是不断处以2取余数,比如
123.375
123/2=61...1
61/2=30...1
30/2=15...0
15/2=7...1
7/2=3...1
3/2=1...1
1/2=0..1
把余数反过来写,1111011就是整数部分的二进制
小数部分
0.375*2=0.75
0.75*2=1.5
1.5*2=3
3的二进制是11,移动3位是0.011
所以
123.375=1111011.011(2)
顺便说下,小数不一定除尽,此时就看你的精度要求了。比如0.12
0.12*2=0.24
0.24*2=0.48
0.48*2=0.96
0.96*2=1.92
1.92*2=3.84
3.84*2=7.68
7.68*2=15.36
...
你可以用15作为近似值,那么15=111,移动7位
所以是0.0000111
也可以用8作为近似值(7.68四舍五入到8),8=100,移动6位
那么就是0.000100也就是0.0001
还可以用4作为近似值0.0001
...
实际上这个值是0.00001111111111111.... 无限小数