b & t
выполняет побитовое И на двух int
с.byte
b
повышается до int
.
. Он печатает биты двоичного представления -34
.
. Двоичное представление -34 равно 11011110.
t
получает значения 128,64,32,16,8,4,2,1, которые в двоичном виде равны
10000000
01000000
00100000
00010000
00001000
00000100
00000010
00000001
При побитовом И эти значения t
с b
вы получите результат, отличный от 0, только когда t
и b
имеют бит '1' в одной и той же позиции.
10000000 & 11011110 = 10000000 -> 1 printed
01000000 & 11011110 = 01000000 -> 1 printed
00100000 & 11011110 = 00000000 -> 0 printed
00010000 & 11011110 = 00010000 -> 1 printed
00001000 & 11011110 = 00001000 -> 1 printed
00000100 & 11011110 = 00000100 -> 1 printed
00000010 & 11011110 = 00000010 -> 1 printed
00000001 & 11011110 = 00000000 -> 0 printed
РЕДАКТИРОВАТЬ: это объяснение не совсем точно,Битовое И выполняется для двух int
с (то есть двух 32-битных чисел), но, поскольку старшие 24 бита t
равны 0
, они не влияют на результат.