(byte)(Pixels[i] < 128 ? 0 : 255)
Yes, this tends to work poorly due to poor branch prediction if the bitmap contains too much random data. Jitter does not generate a conditional move for such a statement.
, . :
(byte)((sbyte)Pixels[i] >> 7)
:
000000a7 movsx eax,byte ptr [edx+eax+8] ; Pixels[i], sign extended to 32-bits
000000ac sar eax,7 ; >> operator
000000af and eax,0FFh ; (byte) cast