首頁 > 軟體

JavaScript進位制數之間的互相轉換

2022-05-18 13:00:41

前言:

進位制轉換是人們利用符號來計數的方法。進位制轉換由一組數碼符號和兩個基本因素“基數”與“位權”構成。基數是指,進位計數制中所採用的數碼(數制中用來表示“量”的符號)的個數。位權是指,進位制中每一固定位置對應的單位值。

一、十進位制的數化為k進位制的數

/**
 * 十進位制的數化為k進位制的數【返回陣列的index=0位置是最高位】(取k取餘法)
 * @num 10進位制數
 * @k k
 * @returns k進位制數序列
 */
function ckqy(num,k) {
    let y = [];
    while (num > 0) {
        let s = Math.floor(num / k);
        let _y = num % k;
        //console.log(num + " ÷ " + k + " = " + s + " ··· " + _y);
        if (s == 0)
        {
            y.push(num);
            num = 0;
        }
        else
        {
            y.push(_y);
            num = s;
        }
    }
    return y.reverse();
}

二、k進位制的數化為十進位制的數

/**
 * k進位制的數化為十進位制的數(乘冪相加法)
 * @kArray k進位制數序列
 * @k k
 * @returns 十進位制的數
 */
function kTo10(kArray,k){
    let v10=0;
    let kArrayLen=kArray.length;
    for(let ind=0; ind<kArrayLen; ind++){
        v10 += kArray[ind] * Math.pow(k,kArrayLen - 1 - ind);
    }
    return v10;
}

三、例題

最近在刷面試題的時候看到一道進位制轉換題,
寫完才發現可以用js的方法直接轉換,這是自己總結的一些方法

1.其它進位制轉換為十進位制資料

//可以直接用parseInt
let num = parseInt(n1,n2);
//n1:是需要轉換為10進位制的數
//n2:是被轉換資料的進位制值,如2,8,16等。

例如將十六進位制的‘AA’轉為十進位制資料:

//十六進位制的數:AA  =>  十進位制的數:170
let num = parseInt('AA',16);    //AA和0xAA都可,此時num = 170

2.十進位制資料轉換為其它進位制

例如將十進位制的170轉為十六進位制的資料

//十進位制的數:170   =>    十六進位制的數:AA  
let num1=parseInt("170");//如果這個數是字串格式的,需要執行這一步
console.log(num1);   //  170
//toString裡的引數可以是2,8,16等.設定轉換10進位制資料到對應進位制格式,本例是將num轉成16進位制資料
let num2=num1.toString(16);
console.log(num2);   //aa

3.其它進位制之間的相互轉換

例如將十六進位制的’AA‘轉為二進位制的資料

  • 首先將十六進位制轉換為十進位制資料
  • 然後再將所得的十進位制資料轉為二進位制資料

小結:進位制之間的轉換都是先將其他進位制資料轉為十進位制,再用轉好的十進位制資料轉為其他進位制資料

//首先將十六進位制的數:AA  =>  十進位制的數:170
let num1 = parseInt('AA',16);    //AA和0xAA都可
console.log(num1);  // 170
let num2 = num1.toString(2);
console.log(num2);   //10101010

到此這篇關於JavaScript進位制數之間的互相轉換的文章就介紹到這了,更多相關JavaScript進位制轉換內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com