數(shù)據(jù)結(jié)構(gòu)(2) 用棧做一個進制轉(zhuǎn)換的方法

上一篇已經(jīng)講到了什么是棧;壓棧的作用是將節(jié)點有順序的壓進棧內(nèi)就和壓盤子一樣,先進后出;彈棧的作用是可以將放入的節(jié)點按照先進后出的規(guī)則彈出;

先講解一下進制轉(zhuǎn)換的原理:

現(xiàn)在隨便有一個數(shù) 比方說是 15 ,15用二進制表示 是 1111 算法為下:

15/2=7.......1;

7/2? =3........1;

3/2? =1........1;

1/2? =0........1;

把這些余數(shù)從下網(wǎng)上排列起來 就是 1111 我們再來一個8的二進制轉(zhuǎn)換:

8/2 =4..........0;

4/2 =2..........0;

2/2 =1...........0;

1/2 =0...........1;

從下網(wǎng)上排列就是 1000 也就是八的二進制。

所以就可以想到把這些余數(shù)放進一個容器里,然后按照先放后出,晚放先出的原則打印出來就是轉(zhuǎn)換進制的方法,這種方法非常復(fù)合 棧 的結(jié)構(gòu);

所以就可以用js寫出:

棧已建好,在上一篇章:

var stack = new Stack();

function toTwo(num){

? ? var arr = [];

? ? while(num>0){

? ??????? ? ?v = Math.floor(num/2);

? ????????? ?y = num%2;

? ? ? ? ? ? ?num = v;

? ? ? ? ? ? ?arr.push(y);

????}

? ? return arr;

}

console.log(toTow(15));? ?// [1,1,1,1];

console.log(toTow(8));? ? ?//[1,0,0,0];

上面是轉(zhuǎn)換二進制的方法 其實不管轉(zhuǎn)換幾進制的原理都和轉(zhuǎn)換二進制一樣 轉(zhuǎn)換二進制就是出2 轉(zhuǎn)換四進制就是 除4 最后都是取余 然后將余數(shù) 倒敘排列 就可以了。

所以掌握上面的原理 轉(zhuǎn)換幾進制都不再是問題。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容