Alterando o bit de sinal no .NET
Estou lendo bits de um bitmap monocromático. Eu estou armazenando a cada 16 bits em umshort
na ordem inversa. Se o bit no bitmap for preto, armazene um 1. Se branco, armazene um 0.
Por exemplo: para bitmap: bbbw bbbw bbbw wwww
meu short é: 0000 0111 0111 0111
A primeira maneira que tentei fazer isso foi:
short m;
// ...
Color c = bmp.GetPixel(j, i);
if (c.R == Color.Black)
m |= short.MinValue;
m >>= 1;
// ...
Após uma atribuição e turno, recebi o esperado -32768 (1000 0000 0000 0000).
Após a 2 ª vez recebi -16384 (1100 0000 0000 0000).
Eu mudei meu código para usarushort
e mudou oif
linha paras |= (ushort)Math.Pow(2, 15);
e agora funciona.
Minha pergunta é: por que o sinal não vai mudar no .NET? Existe uma maneira de mudar o bit de sinal?