byte Java , long |= byte, byte , 1, byte .
:
l |= (data[i] & 255)
int long. .
: " " , " 2" ?. .
:
byte b = (byte)0xB5;
long n = 0l;
n |= b;
, n |= b n = n | b (JLS 15.26.2), .
, n | b. n b - .
JLS 15.22.1:
&, , | , (. 5.1.8), , (§5.6.2).
, 5.6.2, , . :
(§5.1.2) , :
, , n - long, b long , 5.1.2. :
T - .
byte - long, ( ) , . ( 64 , ):
b = (byte)0xB5 10110101
b widened to long 111 ... 1111111110110101
n 000 ... 0000000000000000
n | b 111 ... 1111111110110101
n | b 0xFFFFFFFFFFFFFFB5, 0x00000000000000B5. , OR, 1, , , , , .
byte , Java , long | byte long | long .
, , :
n = n | (long)b;
, " ":
byte b = (byte)0xB5;
long n = 0l;
n |= (b & 255);
, b & 255.
, JLS 3.10.1 , 255 int.
byte & int. , , 5.6.2:
int.
, byte int. , :
(byte)0xB5 10110101
promote to int 11111111111111111111111110110101 (sign extended)
255 00000000000000000000000011111111
& 00000000000000000000000010110101
int, , , , 0.
n | the byte we just converted. int long, , :
b & 255 00000000000000000000000010110101
convert to long 000 ... 0000000000000000000000000010110101
n 000 ... 0000000000000000000000000000000000
n | (b & 255) 000 ... 0000000000000000000000000010110101
.
b int 24 0, long , .
, , :
n = n | (long)((int)b & 255);
, , , 8 ( 8 ).
, 1 s. , , -1L 0L ( ).