Перенос знака в .NET
Я читаю биты из монохромного растрового изображения. Я храню каждые 16 бит вshort
в обратном порядке. Если бит в растровом изображении черный, сохраните 1. Если белый, сохраните 0.
Например: для растрового изображения: толстушки толстушки толстушки wwww
мой короткий: 0000 0111 0111 0111
Первый способ, которым я пытался это сделать, был:
short m;
// ...
Color c = bmp.GetPixel(j, i);
if (c.R == Color.Black)
m |= short.MinValue;
m >>= 1;
// ...
После одного назначения и смены я получил ожидаемый -32768 (1000 0000 0000 0000).
После второго раза я получил -16384 (1100 0000 0000 0000).
Я изменил свой код для использованияushort
и изменилif
линия кs |= (ushort)Math.Pow(2, 15);
и теперь это работает.
Мой вопрос: почему знак не будет сдвигаться в .NET? Есть ли способ сдвинуть знак?