zoukankan      html  css  js  c++  java
  • 二进制和十进制的转换 分别用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))
  • 相关阅读:
    VueJS
    Nacos 微服务注册发现配置中心
    精简自己20%的代码(异常的处理)
    lazarus 检测内存泄漏
    winsocket练习一 阻塞与select模型
    js原型链解析
    块元素 父子外边距现象
    行高的继承
    行内元素(文字)垂直平居中
    本地文件播放
  • 原文地址:https://www.cnblogs.com/zhangjian0092/p/12160018.html
Copyright © 2011-2022 走看看