Вы делаете это:
RInv = 255 - R
GInv = 255 - G
BInv = 255 - B
, что можно сделать с помощью XOR следующим образом:
RInv = R xor 255
GInv = G xor 255
BInv = B xor 255
xor
работает, потому что мы хотим, чтобы сумма R и RInv была равна 255:
RInv = 255 - R
=> RInv + R = 255
и, поскольку xor
на двоичных числах является сложением над полем Галуа mod 2, мы получаем:
C = A xor B
=> C xor B = A xor B xor B = A
RInv = 255 xor R
RInv xor R = 255