相关疑难解决方法(0)

在.NET中移动符号位

我正在从单色位图中读取位.我short以相反的顺序将每16位存储在a 中.如果位图中的位为黑色,则存储1.如果为白色,则存储0.

例如:对于位图:bbbw bbbw bbbw wwww
我的简称是:0000 0111 0111 0111

我尝试这样做的第一种方式是:

short m;
// ...
Color c = bmp.GetPixel(j, i);
if (c.R == Color.Black)
    m |= short.MinValue;
m >>= 1;
// ...
Run Code Online (Sandbox Code Playgroud)

经过一次任务和班次后,我得到了预期的-32768(1000 0000 0000 0000).
第二次我得到-16384(1100 0000 0000 0000).

我更改了我的代码使用ushort并将if行更改为s |= (ushort)Math.Pow(2, 15);现在它的工作原理.

我的问题是:为什么标志位不会在.NET中转移?有没有办法改变标志位?

.net c# bit-shift

13
推荐指数
2
解决办法
6973
查看次数

标签 统计

.net ×1

bit-shift ×1

c# ×1