迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

在 JavaScript 中将数字转换为二进制格式

作者:迹忆客 最近更新:2024/03/16 浏览次数:

将数字转换为二进制是一个相当复杂的过程。如果我们坐下来手动转换数字,结果很容易出错。我们如何将数字更改为二进制格式?JavaScript 没有很多内置函数可以这样做。我们将介绍如何在 JavaScript 中将数字转换为二进制。


在 JavaScript 中创建一个将数字转换为二进制的函数

在进入代码之前,我们需要了解从十进制数(基数为 10)到二进制数(基数为 2)的转换过程。为简单起见,我们将在本文中介绍正整数的转换。因此,负整数和浮点数的变化超出了本文的范围。

了解转换过程

给定一个整数(或 JavaScript 数字),我们不断将数字除以 2 并捕获其余数,直到数字小于 2。例如,如果我们有一个数字 25,继续将 25 除以 2 直到我们得到商小于 2。

除数
25 / 2 12 1 0
12 / 2 6 0 1
6 / 2 3 0 2
3 / 2 1 1 3
1 / 2 0 1 4

我们从高到低读取数字。因此,数字 25 的二进制值是 1101。

我们使用以下一组计算来确认二进制值是否代表正确的十进制数。二进制数中表示的每个位都乘以 2,为位位置值(从 0 开始)提供动力。

= 2^4*(1) + 2^3*(1) + 2^2*(0) + 2^1*(0) + 2^0*(1)
= 16 + 8 + 0 + 0 + 1
= 25

将数字转换为二进制格式的 JavaScript 代码

我们在上面讨论的方法上构建以下代码。函数 convertToBinary1 控制作为参数传递的十进制数的二进制等价物。请注意,我们向后读取结果。因此,在考虑所有上述因素的情况下创建了代码。

function convertToBinary1(number) {
  let num = number;
  let binary = (num % 2).toString();
  for (; num > 1;) {
    num = parseInt(num / 2);
    binary = (num % 2) + (binary);
  }
  console.log(binary);
}

window.onload = function() {
  console.log(convertToBinary1(25));
  console.log(convertToBinary1(8));
}

输出:

11001
1000
  • 复制传递给函数的参数并将其存储在临时变量 num 中。
  • 创建一个变量来存储二进制位。它本质上是字符串类型,以便于处理。
  • 开始迭代以生成二进制位并让它继续直到数字不再能被 2 整除。

    在每次迭代中,我们将数字除以 2 以获得商。我们计算商的。此步骤将二进制位生成为数字的模数,其中 2 生成二进制位 01

  • 将由 modulous 值生成的二进制位附加到保存每次迭代中生成的二进制位的二进制变量中。
  • 一旦数字不再能被 2 整除(检查条件(num / 2)> 1),迭代停止。
  • 在最后一步,我们将结果记录到控制台。因此,我们得到作为参数传递给该函数的十进制数的二进制等效项。

使用递归

我们可以使用递归方法将十进制位转换为二进制位。这种方法需要更少的代码行,但需要更多的思考。当数字不再能被 2 整除时,递归停止,并不断调用自己,直到达到突破条件。递归很优雅,但与简单迭代方法相比,函数调用堆栈消耗更多内存。

function convertToBinary(number, bin) {
  if (number > 0) {
    return convertToBinary(parseInt(number / 2)) + (number % 2)
  };
  return '';
}

window.onload = function() {
  console.log(convertToBinary(25));
  console.log(convertToBinary(8));
}

输出:

11001
1000

使用 toString(2) 函数将数字转换为二进制

toString() 函数对于将数字转换为字符串非常熟悉。但是,我们也可以使用它来将数字转换为其二进制格式。通常,它与 Number 对象一起使用以将数字转换为二进制格式。javascript 的 toString(2) 函数在用于数字对象时,返回数值的二进制等效项,如下面的示例所示。该方法将基数值作为输入。因此,我们可以使用它来将给定的数字转换为其他基本系统(如 16 的基数(十六进制)和 8 的基数(八进制))。

(8).toString(2)(25).toString(2)(235).toString(2)

输出:

"1000"
"11001"
"11101011"

请注意,toString(2) 方法的返回类型仍然是字符串。因此,它将数字转换为字符串格式的二进制位。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Do you understand JavaScript closures?

发布时间:2025/02/21 浏览次数:108 分类:JavaScript

The function of a closure can be inferred from its name, suggesting that it is related to the concept of scope. A closure itself is a core concept in JavaScript, and being a core concept, it is naturally also a difficult one.

Do you know about the hidden traps in variables in JavaScript?

发布时间:2025/02/21 浏览次数:178 分类:JavaScript

Whether you're just starting to learn JavaScript or have been using it for a long time, I believe you'll encounter some traps related to JavaScript variable scope. The goal is to identify these traps before you fall into them, in order to av

How much do you know about the Prototype Chain?

发布时间:2025/02/21 浏览次数:150 分类:JavaScript

The prototype chain can be considered one of the core features of JavaScript, and certainly one of its more challenging aspects. If you've learned other object-oriented programming languages, you may find it somewhat confusing when you start

用 jQuery 检查复选框是否被选中

发布时间:2024/03/24 浏览次数:102 分类:JavaScript

在本教程中学习 jQuery 检查复选框是否被选中的所有很酷的方法。我们展示了使用直接 DOM 操作、提取 JavaScript 属性的 jQuery 方法以及使用 jQuery 选择器的不同方法。你还将找到许多有用的

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便