上代码之前先看一下转换逻辑:
具体代码如下:
class Stack {
data = [];
// 压栈
push(element: any) {
this.data.push(element);
}
// 出栈
pop() {
return this.data.pop();
}
// 返回栈顶的元素
peek() {
return this.data[this.data.length - 1];
}
// 栈是否为空
isEmpty() {
return this.data.length === 0;
}
// 以字符串形式返回
toString() {
return this.data.toString();
}
}
/**
* @description 十进制转二进制
* @param decNumber 要转换的十进制数字
*/
const dec2bin = (decNumber: number) => {
// 定义栈对象
const stack = new Stack();
// 循环操作
while (decNumber > 0) {
// 将余数压入栈
stack.push(decNumber % 2);
// 获取整除后的结果,用于下一次运算
decNumber = Math.floor(decNumber / 2);
}
// 从栈内存中取出 0 和 1
let binaryString = "";
while (!stack.isEmpty()) {
binaryString += stack.pop();
}
return binaryString;
};
console.log("100转换成二进制为:", dec2bin(100)); // 100转换成二进制为: 1100100