javascript - 如何在二进制上应用按位右移运算符?

标签 javascript bitwise-operators bit-shift

如何对二进制执行按位右移?

JS 中的

>> 适用于整数。因此,6 >> 1(按位右移,步骤 1)显示结果为 3(110 >> 1 = 011 – 正确)。这很好,但是...是否可以与二进制一起使用右移运算符?

我需要这个:110 >> 1 正常工作。结果将显示 55,这是正确的。 110 是 01101110。01101110 >> 1 = 0011011100110111 是 55。正确。但我想要 011 作为结果!我如何在 js 中做到这一点?

最佳答案

对我来说这看起来像是字符串操作。怎么样:

function shr(x, s) {
    return
        new String('0', Math.min(s, x.length)) +
        x.substr(0, Math.max(0, x.length - s));
}

>>> shr('110', 1)
'011'

或者,您可以使用常用的按位运算符,并简单地预先从字符串表示形式转换(一次),然后再转换回字符串表示形式(一次)。

关于javascript - 如何在二进制上应用按位右移运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26431894/

相关文章:

javascript - 单独或一起检查属性是否有意义?

javascript - AngularJS - ' Controller 不是函数 : Seperate controller files

c++ - 这是 operator<</>> 的正确实现吗?

c++ - C++ 中的多数函数使用 3 uint8_t

c++ - 是否可以微优化 "x = max(a,b); y = min(a,b);"?

javascript - 按值对相邻数组项进行分组的最佳方法

javascript - 在/作为高阶函数中使用 jQuery 函数

c - 16 位非负数的右旋?

verilog - 请解释一下这个 SystemVerilog 语法 {>>byte{...}}

c - 按位左移 (<<) 奇怪的行为