上一篇已經(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)換幾進制都不再是問題。