数据结构(2) 用栈做一个进制转换的方法

上一篇已经讲到了什么是栈;压栈的作用是将节点有顺序的压进栈内就和压盘子一样,先进后出;弹栈的作用是可以将放入的节点按照先进后出的规则弹出;

先讲解一下进制转换的原理:

现在随便有一个数 比方说是 15 ,15用二进制表示 是 1111 算法为下:

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

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

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

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

把这些余数从下网上排列起来 就是 1111 我们再来一个8的二进制转换:

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

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

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

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

从下网上排列就是 1000 也就是八的二进制。

所以就可以想到把这些余数放进一个容器里,然后按照先放后出,晚放先出的原则打印出来就是转换进制的方法,这种方法非常复合 栈 的结构;

所以就可以用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];

上面是转换二进制的方法 其实不管转换几进制的原理都和转换二进制一样 转换二进制就是出2 转换四进制就是 除4 最后都是取余 然后将余数 倒叙排列 就可以了。

所以掌握上面的原理 转换几进制都不再是问题。

你可能感兴趣的