js的进制转换


十进制转二进制

  1. 将该数除以 2,得到商和余数。
  2. 将余数记录下来,作为二进制数的最低位。
  3. 将商作为新的十进制数,重复步骤 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() 方法将其转换为二进制数。

二进制转十进制

  1. 将二进制数的最低位乘以 2 的 0 次幂(即 1),第二位乘以 2 的 1 次幂,第三位乘以 2 的 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。


文章作者: Icon
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Icon !
评论
  目录