如果(缓冲区[0]& 0x80)是什么意思

时间:2017-07-28 00:05:37

标签: javascript cryptography

我在下面看到了这段代码,试图了解这种情况的含义      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)
}

2 个答案:

答案 0 :(得分:1)

这是按位运算符。它对这两个整数的每个位位置执行和操作,并返回一个新的整数。

举个例子:

10010001
10000000

那将是:

10000000

https://en.wikipedia.org/wiki/Bitwise_operation#AND

答案 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)。