使用这个位操作符序列时会发生什么?
What happens when using this sequence of bitwise operators
我在javascript中遇到了这个函数
function(x) {
return (x >> 8 << 8) ^ x;
};
用于将x转换为字节表示。我理解按位操作的作用,但我不明白发生了什么,因为(122>> 8 <<8)输出0。
x >> 8
右移x 8次,有效地清除最低有效的8位。
(x >> 8) << 8
左移8位。因此,我们得到x,其中最不有效的8位设置为0。如果x(16位数字)初始值为0b0001000101010101,则首先变为0b0000000000010001,最后变为0b0001000100000000。
(x >> 8 << 8) ^ x
这将用x代替上面的数字,保留最不有效的8位,并将其余全部清除为0。因此,获得最低有效位字节。它也适用于你的情况,因为122小于2^8。用0代替122返回最低有效位字节——122本身。
相关文章:
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 在 React JS 中,什么时候应该使用存储而不是直接操作视图的状态
- 此程序中按位运算的目的是什么
- 将自然数转换为三位字符串的简单算法是什么
- 如何上传文件不使用多部分编码?(可能使用八位字节或其他什么)
- 对大值执行按位操作
- 如何在Ruby中模拟JavaScript的逐位操作中截断大整数
- 逐位操作'javascript的重要性
- 位操作:检测是否设置了至少 5 位字节
- 什么位模式表示双精度浮点数的最大值?
- 按位操作,但这是什么意思(Espruino)
- 32位无符号JavaScript按位操作很简单
- Javascript按位操作
- 如何将位操作产生的32位JavaScript数字转换回64位数字?
- 按位操作容易在运行时typescript失败
- 位操作 - 在 JavaScript 中取消设置产生错误值的位
- 为什么这个按位操作在python和js中没有给出相同的结果?
- 使用位操作将Unicode转换为字符
- 位操作-为什么0x80000000 >>JavaScript中的1生成一个负值
- 位操作-破解javascript数字转换为UInt32