JS算法-颠倒二进制位

简介: JS算法-颠倒二进制位

题目


颠倒给定的 32 位无符号整数的二进制位。

输入:n = 11111111111111111111111111111101
输出:3221225471 (10111111111111111111111111111111)


题解


第一种


首先我们在函数中先定义了一个空数组reverseBinary变量和变量numbertnumbert分别用于记录翻转后的十进制数和二进制位的权值。然后使用while循环将十进制数n转换为二进制数,并将每一位存入reverseBinary数组中,此时数组中的元素是从低位到高位排列的,接下来判断reverseBinary数组的长度是否为32,如果不足32位,则在数组的前面添加0,使其长度达到32位,最后使用forEach循环遍历reverseBinary数组,计算翻转后的十进制数,即将每一位二进制数乘以对应的权值,然后累加到number变量中,最后返回number即可

var reverseBits = function (n) {
  var reverseBinary = [];
  var number = 0, t = 1, i;
  while (n) {
    reverseBinary.unshift(n % 2);
    n = Math.floor(n / 2);
  }
  if (reverseBinary.length < 32) {
    let len = 32 - reverseBinary.length;
    for (i = 0; i < len; i++) {
      reverseBinary.unshift(0);
    }
  }
  reverseBinary.forEach(function (value) {
    number += value * t;
    t *= 2;
  })
  return number;
};


第二种


将整数n转换成二进制形式。使用toString(2)方法将整数转换成二进制字符串,如果转换后的二进制字符串长度小于32,使用while循环在字符串左侧补0,直到长度为32。这样可以确保所有的二进制字符串都是32位的,将32位二进制字符串n转换成数组形式,便于后面的遍历操作,遍历二进制字符串数组n,当数组元素为1时,使用Math.pow(2,i)方法计算该位的值,将所有计算出的值累加到sum变量中,最后返回sum变量,即为反转后的32位无符号整数

var reverseBits = function (n) {
  n = n.toString(2);
  while (n.length < 32) {
    n = '0' + n;
  }
  n = n.split('');
  var sum = 0;
  for (var i = 0; i < n.length; i++) {
    if (n[i] == '1') sum += Math.pow(2, i);
  }
  return sum;
};
相关文章
|
5天前
|
存储 监控 算法
局域网网络管控里 Node.js 红黑树算法的绝妙运用
在数字化办公中,局域网网络管控至关重要。红黑树作为一种自平衡二叉搜索树,凭借其高效的数据管理和平衡机制,在局域网设备状态管理中大放异彩。通过Node.js实现红黑树算法,可快速插入、查找和更新设备信息(如IP地址、带宽等),确保网络管理员实时监控和优化网络资源,提升局域网的稳定性和安全性。未来,随着技术融合,红黑树将在网络管控中持续进化,助力构建高效、安全的局域网络生态。
25 9
|
11天前
|
监控 算法 JavaScript
基于 Node.js Socket 算法搭建局域网屏幕监控系统
在数字化办公环境中,局域网屏幕监控系统至关重要。基于Node.js的Socket算法实现高效、稳定的实时屏幕数据传输,助力企业保障信息安全、监督工作状态和远程技术支持。通过Socket建立监控端与被监控端的数据桥梁,确保实时画面呈现。实际部署需合理分配带宽并加密传输,确保信息安全。企业在使用时应权衡利弊,遵循法规,保障员工权益。
25 7
|
9天前
|
存储 监控 JavaScript
深度探秘:运用 Node.js 哈希表算法剖析员工工作时间玩游戏现象
在现代企业运营中,确保员工工作时间高效专注至关重要。为应对员工工作时间玩游戏的问题,本文聚焦Node.js环境下的哈希表算法,展示其如何通过快速查找和高效记录员工游戏行为,帮助企业精准监测与分析,遏制此类现象。哈希表以IP地址等为键,存储游戏网址、时长等信息,结合冲突处理与动态更新机制,确保数据完整性和时效性,助力企业管理层优化工作效率。
23 3
|
4月前
|
算法 JavaScript 前端开发
第一个算法项目 | JS实现并查集迷宫算法Demo学习
本文是关于使用JavaScript实现并查集迷宫算法的中国象棋demo的学习记录,包括项目运行方法、知识点梳理、代码赏析以及相关CSS样式表文件的介绍。
第一个算法项目 | JS实现并查集迷宫算法Demo学习
|
5月前
|
JavaScript 算法 前端开发
JS算法必备之String常用操作方法
这篇文章详细介绍了JavaScript中字符串的基本操作,包括创建字符串、访问特定字符、字符串的拼接、位置查找、大小写转换、模式匹配、以及字符串的迭代和格式化等方法。
JS算法必备之String常用操作方法
|
5月前
|
JavaScript 算法 前端开发
JS算法必备之Array常用操作方法
这篇文章详细介绍了JavaScript中数组的创建、检测、转换、排序、操作方法以及迭代方法等,提供了数组操作的全面指南。
JS算法必备之Array常用操作方法
|
5月前
|
算法 JavaScript 前端开发
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
367 1
|
5月前
|
JavaScript 算法 前端开发
"揭秘Vue.js的高效渲染秘诀:深度解析Diff算法如何让前端开发快人一步"
【8月更文挑战第20天】Vue.js是一款备受欢迎的前端框架,以其声明式的响应式数据绑定和组件化开发著称。在Vue中,Diff算法是核心之一,它高效计算虚拟DOM更新时所需的最小实际DOM变更,确保界面快速准确更新。算法通过比较新旧虚拟DOM树的同层级节点,递归检查子节点,并利用`key`属性优化列表更新。虽然存在局限性,如难以处理跨层级节点移动,但Diff算法仍是Vue高效更新机制的关键,帮助开发者构建高性能Web应用。
91 1
|
4天前
|
算法 数据安全/隐私保护
室内障碍物射线追踪算法matlab模拟仿真
### 简介 本项目展示了室内障碍物射线追踪算法在无线通信中的应用。通过Matlab 2022a实现,包含完整程序运行效果(无水印),支持增加发射点和室内墙壁设置。核心代码配有详细中文注释及操作视频。该算法基于几何光学原理,模拟信号在复杂室内环境中的传播路径与强度,涵盖场景建模、射线发射、传播及接收点场强计算等步骤,为无线网络规划提供重要依据。
|
5天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真