十進制轉二進制,十進制轉任意進制

  • 實現棧,後進先出(LIFO)

        包括往後面添加(push),返回第一個並刪除(pop),返回最後一個(peek),是否爲空(isEmpty),大小(size),

清空(clear)

class Stack {
constructor(){
this.item = []
}
push (data) {
this.item.push(data)
}
pop () {
return this.item.pop()
}
peek () {
return this.item[this.item.length-1]
}
isEmpty () {
return this.item.length === 0
}
size () {
return this.item.length
}
clear () {
this.item = []
}
}

  • 利用棧特性,實現十進制轉二進制

function divideBy2(num) {
var stack = new Stack();
var rest = ''; //餘數
var resStr = ''; //返回值
while(num > 0) {
rest = num % 2;
stack.push(rest);
num = Math.floor(num / 2)
}
while(!stack.isEmpty()) {
resStr += stack.pop()
}
return resStr
}
console.log(divideBy2(10))
console.log(divideBy2(1))

  •     在十進制實現二進制的基礎上,只需要稍微調整一下就可以實現十進制轉二進制了,具體代碼如下:

function divideByAny(num, bit) {
var stack = new Stack();
var rest = ''; //餘數
var resStr = ''; //返回值
var str = '0123456789ABCDEF'
while(num > 0) {
rest = num % bit;
stack.push(rest);
num = Math.floor(num / bit);
}
while(!stack.isEmpty()) {
resStr += str[stack.pop()];
}
return resStr;
}
console.log(divideByAny(10,16))
console.log(divideByAny(2,16))
console.log(divideByAny(20,16))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章