十进制转二进制
- 将该数除以 2,得到商和余数。
- 将余数记录下来,作为二进制数的最低位。
- 将商作为新的十进制数,重复步骤 1 和 2,直到商为 0。
例如,将十进制数 13
转换为二进制数的过程如下:
13 ÷ 2 = 6 ... 1
6 ÷ 2 = 3 ... 0
3 ÷ 2 = 1 ... 1
1 ÷ 2 = 0 ... 1
因此,二进制数为 1101。
在 JavaScript 中,可以使用以下代码将一个十进制数转换为二进制数:
function decimalToBinary(decimal) {
let binary = '';
while (decimal > 0) {
binary = (decimal % 2) + binary;
decimal = Math.floor(decimal / 2);
}
return binary || '0';
}
console.log(decimalToBinary(13)); // 输出 "1101"
这个函数接受一个十进制数 decimal
,并返回一个表示该数的二进制字符串。
另一种方式是使用 toString() 方法将一个十进制数转换为二进制字符串。例如:
const num = 5;
const binary = num.toString(2);
console.log(binary); // 输出 "101"
在这个例子中,我们将数字 5 转换为二进制字符串 “101”。
如果要将一个十进制数转换为一定位数的二进制数,可以使用 toString()
方法,并在参数中指定要转换的二进制数的位数。例如:
const num = 5;
const binary = num.toString(2).padStart(8, '0');
console.log(binary); // 输出 "00000101"
在这个例子中,我们将数字 5 转换为 8 位二进制数,并在左侧填充 0,得到二进制数 “00000101”。
另外,也可以使用位运算符将一个十进制数转换为二进制数。例如,以下代码将数字 5 转换为二进制数:
const num = 5;
const binary = (num >>> 0).toString(2);
console.log(binary); // 输出 "101"
在这个例子中,我们使用带符号右移位运算符 >>>
将数字 5 转换为无符号整数,然后使用 toString()
方法将其转换为二进制数。
二进制转十进制
- 将二进制数的最低位乘以 2 的 0 次幂(即 1),第二位乘以 2 的 1 次幂,第三位乘以 2 的 2 次幂,以此类推。
- 对每个乘积求和,得到十进制数的值。
例如,将二进制数 1101 转换为十进制数的过程如下:
1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 8 + 4 + 0 + 1 = 13
因此,十进制数为 13。
在 JavaScript 中,可以使用 parseInt()
方法将一个二进制字符串转换为十进制数。例如:
const binary = '1101';
const decimal = parseInt(binary, 2);
console.log(decimal); // 输出 13
在这个例子中,我们使用 parseInt()
方法将二进制字符串 “1101” 转换为十进制数 13。注意,在第二个参数中指定基数为 2,表示输入的字符串是一个二进制数。
负数的进制转化
在 JavaScript 中,负数的二进制表示使用 2 的补码(two’s complement)表示法。该表示法将负数转换为其绝对值的二进制反码,然后再加上 1。
例如,-5 在 8 位二进制下的 2 的补码表示法如下:
5 的二进制表示为:00000101
对 5 取反得到它的二进制反码:11111010
将它的二进制反码加 1 得到它的 2 的补码:11111011
因此,在 JavaScript 中,-5 的二进制表示为 11111111111111111111111111111011
。
如果要将一个负数转换为十进制数,则可以使用以下方法:
将它的二进制表示取反得到它的二进制反码。
将二进制反码加上 1 得到它的 2 的补码。
如果最高位(符号位)是 1,则结果为负数,否则为正数。
将二进制数转换为十进制数。
例如,将二进制数 11111111111111111111111111111011
转换为十进制数的步骤如下:
取反得到它的二进制反码:00000000000000000000000000000100
加上 1 得到它的 2 的补码:00000000000000000000000000000101
最高位是 1,因此结果为负数。
将二进制数转换为十进制数,得到 -5。