這些天和進制轉換槓上了,具體可以點前面的超鏈接。由於自己的水平有限,所以c++玩不下去了。現在我使用python將之前的 二進制整數轉換為十進制 c++實現 進行了擴展,現在可以實現小數部分的轉換。關於位權什麼的直接點前面的鏈接進去看之前的文章。二進制的小數部分的位權是(1/2)^n,例如將 二進制0.101 轉換為十進制為0.625,過程如下
1*1/2 =0.5 0*1/(2^2)=0 1*1(2^3)=0.125 0.5+0.125=0.625
#!/usr/bin/env python
# -*- coding:utf-8 -*-
def tod(a):
a=int(a)
if a/10 !=0:
return tod(a/10)*2+(a%10)
else:
return a
def xod(a):
b=0
for i in range(0,len(a)):
b=b+int(a[i])*pow(0.5,i+1)
return b
def zod(a):
if '.' in a:
a=a.split('.')
a[0]=tod(a[0])
a[1]=xod(a[1])
a=a[0]+a[1]
else:
a=tod(a)
return a
if __name__=='__main__':
a=raw_input('請輸入一個二進制的數(可以包含小數):')
a=zod(a)
print a
下面請看運行結果