Прежде всего 0xFF7F
- это 1111 1111 0111 1111
. Это смещается вправо на количество бит, рассчитанное на основе бита, который вы передаете в качестве параметра (то есть того, который вы хотите установить).
Если вы укажете третий бит posBit = 3 % 8 = 3
, то
0xFF7F 1111 1111 0111 1111
>> 3 0001 1111 1110 1111
это значение затем И с исходным байтом, который вы модифицируете, в результате каждый бит сохраняется равным oldBit
исходному биту, кроме того, который анодирован битом 0
, предположим, что у вас есть, например, oldByte == 0111 1010
, вы получите:
0111 1010
& 1110 1111
-------------
0110 1010
Затем значение добавляется 0xFF
только для того, чтобы отбросить любой бит, который не помещается в байт (потому что это по крайней мере девятый бит) перед выполнением приведения.