可以利用栈将一个数字从一种数制转换成另一种数制。假设想将数字n转换为以b为基数的数字,实现转换的算法如下:
- 最高位为 n%b ,将此位压入栈。
- 使用 n/b 代替n。
- 重复步骤1和2,直到n等于0,且没有余数。
- 持续将栈内元素弹出,直到栈为空,依次将这些元素排列,就得到转换后的数字的字符串形式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| <script> function Stack() { this.dataStore = []; this.top = 0; this.push = push; this.pop = pop; this.peek = peek; this.clear = clear; this.length = length; }
function push(element) { this.dataStore[this.top++] = element; }
function peek() { return this.dataStore[this.top-1]; }
function pop() { return this.dataStore[--this.top]; }
function clear() { this.top = 0; }
function length() { return this.top; }
function mulBase(num, base) { var s = new Stack(); do { s.push(num%base); num = Math.floor(num /= base); } while(num > 0); var converted = ""; while(s.length() > 0) { converted += s.pop(); } return converted; }
alert(mulBase(10, 2));
</script>
|