Javascript 或0x80的作用是什么?
在按位运算中,| 0x80做什么?我知道&0xFF是将值转换为8位整数,但是| 0x80呢? 我有以下代码:Javascript 或0x80的作用是什么?,javascript,bit-manipulation,bitwise-operators,Javascript,Bit Manipulation,Bitwise Operators,在按位运算中,| 0x80做什么?我知道&0xFF是将值转换为8位整数,但是| 0x80呢? 我有以下代码: const buf = createHash('sha256').update('test').digest() for (let i = 0; i < n; i++) { const ubyte = buf.readUInt8(i) const shifted = (ubyte >> 1) | mask destBuf.writeUInt
const buf = createHash('sha256').update('test').digest()
for (let i = 0; i < n; i++) {
const ubyte = buf.readUInt8(i)
const shifted = (ubyte >> 1) | mask
destBuf.writeUInt8(shifted, i)
mask = (ubyte & 1) * 0x80 // mask is 0 or 128
}
有人能给我解释一下吗?它将两个参与的数字的位与逻辑or组合在一起: 常数b=0x7; 功能tsta,b{ console.loga.toString2.padStart8+第一个数字:+a console.logb.toString2.padStart8+第二个数字:+b console.loga | b.toString2.padStart8+位叠加:+a | b console.log-- }
[0x80,0x6A,0x70,0x8f]。forEacha=>tsta,b它将两个参与数字的位与逻辑or组合: 常数b=0x7; 功能tsta,b{ console.loga.toString2.padStart8+第一个数字:+a console.logb.toString2.padStart8+第二个数字:+b console.loga | b.toString2.padStart8+位叠加:+a | b console.log-- } [0x80,0x6A,0x70,0x8f].forEacha=>tsta,b0x。。。意味着接下来是一个十六进制数。 0x80是数字128的十六进制表示形式。在二进制中,这等于1000000 |字符是按位or运算符。假设您有一个8位数字:
a = xxxxxxxx
x是0或1。现在,用0x80屏蔽这个数字意味着:
因此,它基本上意味着最左边的有效位将有一个1,而所有其他位保持不变
现在,在代码中,您在以下行中使用此掩码:
const shifted = (ubyte >> 1) | mask
这样做的目的是获取ubyte的数字:
它将其右移一位数:
ubyte >> 1 = zxxxxxxx // y gets lost, and z is a 0 if ubyte was unsigned.
现在它用你的面具遮住了这个数字。当掩码为128时,结果为:
(ubyte >> 1) | 10000000 = 1xxxxxxx
因此,最高有效位为1,其他位不变。0x。。。意味着接下来是一个十六进制数。
0x80是数字128的十六进制表示形式。在二进制中,这等于1000000
|字符是按位or运算符。假设您有一个8位数字:
a = xxxxxxxx
x是0或1。现在,用0x80屏蔽这个数字意味着:
因此,它基本上意味着最左边的有效位将有一个1,而所有其他位保持不变
现在,在代码中,您在以下行中使用此掩码:
const shifted = (ubyte >> 1) | mask
这样做的目的是获取ubyte的数字:
它将其右移一位数:
ubyte >> 1 = zxxxxxxx // y gets lost, and z is a 0 if ubyte was unsigned.
现在它用你的面具遮住了这个数字。当掩码为128时,结果为:
(ubyte >> 1) | 10000000 = 1xxxxxxx
因此,最高有效位为1,其他位不变。|按位or运算符是否理解&0xFF将值转换为8位整数的原因?关于| 0x80 |是按位or运算符吗?您理解为什么&0xFF将值转换为8位整数吗?与| 0x80相同