二进制和十进制的转换 分别用python和js实现

js实现:

// 进制转换.js 文件内容
function ten_to_two(argument){
var li = []; while (true){ b = argument % 2; li.push(b); argument = parseInt(argument/2); if(argument==0){ break }; }; li.reverse(); return li.join(''); }
import execjs

with open('进制转换.js', 'r') as f:
    js = f.read()

fun = execjs.compile(js)

ret = fun.call('ten_to_two', 12)
print(ret)

python实现

# 二进制小数转化成十进制小数
# 0.1111 = 2**(-1) + 2**(-2) + 2**(-3) + 2**(-4)

def two_to_ten(num):
    ret = 0
    for i in range(1, len(str(num))-1):
        ret += 2**(-i)
    return ret


# 十进制小数转化为二进制
# 0.9375

def ten_to_two(num):
    ret = ['0.']
    for i in range(100):
        num *= 2
        ret.append(str(int(num)))
        num -= int(num)
        if num == 0:
            break
    return ''.join(ret)

# print(two_to_ten(0.1111))
print(ten_to_two(0.9375))

# 十进制数转换为二进制采用 除2取余, 逆序排列的方式
# 数字   ÷2     余数
# 10     2      0
# 5      2      1
# 2      2      0
# 1      2      1
# 0
# 所以10的二进制表示就是 1010

def int_ten_two(num):
    li = []
    a = True
    while a:
        a,b = divmod(num, 2)
        print(a,b)
        li.append(str(b))
        num = a
    return ''.join(li[::-1])

print(int_ten_two(10))
原文地址:https://www.cnblogs.com/zhangjian0092/p/12160018.html