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))