723. 左旋转二进制位(JavaScript)-LintCode

本文介绍了一种位操作——左旋转,详细解释了如何通过转换数字为二进制字符串并进行位移来实现这一操作。文章提供了具体的代码示例,帮助读者理解如何在32位环境下完成位旋转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:位旋转 -—— 旋转(或循环移位)是类似于移位的操作, 不同的是一端脱落的那一位会被放回到另一端
在左旋转中, 左端掉下来的那一位会放在右端
假设 n 用 8 位二进制来存. 对 n = 11100101 左旋转 3 位, 得到 n = 00101111 (左移3位, 原先的前3位放在末尾).
如果 n 用 16 位或 32 位二进制来存, 那么对 n (000…11100101)左旋转了之后会变成 (00..0011100101000).
在本问题中, 你可以假设 n 是用 32 位二进制来存的.

样例

给出 n = 123, d = 4 返回 1968

思路:将n转换成二进制字符串,长度不足32位前面补0,然后将字符串前d位拼接到字符串尾部。

/**
 * @param n: a number
 * @param d: digit needed to be rorated
 * @return: a number
 */
const leftRotate = function (n, d) {
    // write code here
    var str = n.toString(2);
    var len = str.length;
    if(len < 32) {
        for(var i = len + 1; i <= 32; i++)
            str = '0' + str;
    }
    var left = str.slice(0, d);
    var right = str.slice(d);
    str = right + left;
    return parseInt(str, 2);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值