使用此按位运算符序列时会发生什么

时间:2015-08-20 14:25:33

标签: javascript bitwise-operators

我在javascript中遇到过这个函数

function(x) {
    return (x >> 8 << 8) ^ x;
};

它用于将x转换为字节表示。我理解按位操作的作用,但是我不明白发生了什

1 个答案:

答案 0 :(得分:2)

x >> 8

右移x次,有效清除最低8位。

(x >> 8) << 8

这左移上述数量8位。因此,我们得到x,最低有效8位设置为0。 如果x(16位数)最初为0b0001000101010101,则它首先变为0b0000000000010001,最后变为0b0001000100000000。

(x >> 8 << 8) ^ x

这将使用x对上述数字进行xor,保留最低有效8位并将所有其余部分清除为0。 因此,获得最低有效字节。 它也适用于你的情况,因为122小于2 ^ 8。 Xoring 122为0返回最低有效字节 - 122本身。