• 十进制与二进制的互相转换


    -

    // 将十进制转换为二进制
    function to2(number){
        return Number(number.toString(2));
    }
    console.log(to2(3));// 11
    
    
    /**
    * 将二进制小数部分转换为十进制数
    * @param binaryFloatPartArr 二进制小数部分中由小数各位组成的数组
    */
    function eachBinaryFloatPartToDecimal(binaryFloatPartArr) {
        return binaryFloatPartArr.map((currentValue, index) => {
            return Number(currentValue) * Math.pow(2, (-(index + 1)))
        })
    }
    
    /**
    * 将二进制小数(包含整数部分和小数部分)转换为十进制数
    * @param binaryNum 二进制数(可能是整数,也可能是小数)
    */
    function binaryFloatToDecimal(binaryNum) {
        // 如果该二进制只有整数部分则直接用 parseInt(string, radix) 处理
        if (Number.isInteger(binaryNum)) {
            return parseInt(binaryNum, 2)
        } else {
            const binaryFloatNumArr = binaryNum.toString().split(".")
    
            // 将二进制整数转换为十进制数
            const binaryIntParStr = binaryFloatNumArr[0]
            const decimalIntPartNum = parseInt(binaryIntParStr, 2)
    
            // 将二进制小数部分转换为十进制数
            const binaryFloatPartArr = binaryFloatNumArr[1].split("")
            const eachDecimalFloatPartNum = eachBinaryFloatPartToDecimal(binaryFloatPartArr)
            const deciamlFloatPartNum = eachDecimalFloatPartNum.reduce((accumulator, currentValue) => { return accumulator + currentValue })
            return decimalIntPartNum + deciamlFloatPartNum
        }
    }
    
    console.log(binaryFloatToDecimal(1111011.111))  // 123.875
    console.log(binaryFloatToDecimal(1111011))  // 123
    console.log(binaryFloatToDecimal(0.111))  // 0.875
    console.log(to2(123.875));// 1111011.111
    console.log(to2(123));// 1111011
    console.log(to2(0.875));// 0.111

    -

  • 相关阅读:
    else 的特殊用法和三目运算
    pycharm快捷键
    5、【排序算法】选择排序
    4、【排序算法】希尔排序
    3、【排序算法】直接插入排序
    1、【常见算法】不使用第三个变量交换两个数的值
    1、【排序算法】冒泡排序
    7、【树形结构】哈夫曼树
    6、【树形结构】红黑树
    5、【树形结构】AVL树
  • 原文地址:https://www.cnblogs.com/fqh123/p/15415710.html
Copyright © 2020-2023  润新知