我在下面看到了这段代码,试图了解这种情况的含义 if(buffer [0]& 0x80)
BigInteger.fromBuffer = function (buffer) {
if (buffer[0] & 0x80) {
var byteArray = Array.prototype.slice.call(buffer)
return new BigInteger([0].concat(byteArray))
}
return new BigInteger(buffer)
}
答案 0 :(得分:1)
这是按位运算符。它对这两个整数的每个位位置执行和操作,并返回一个新的整数。
举个例子:
10010001
10000000
那将是:
10000000
答案 1 :(得分:0)
x表示0或1。
x x x x x x x x
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
buffer[0] = xxxx xxxx;
0x80 = 1000 0000;
--------------------- &
buffer[0] = 1xxx xxxx
当缓冲区[0] = 1 xxx xxxx时,将执行 slice ; (缓冲区[0]的第7位必须为1 ,其他位(第0-6位)可以为0或1)。