十进制转二进制,十进制转任意进制

  • 实现栈,后进先出(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))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值