我有一些像这样的旧代码:
private int ParseByte(byte theByte)
{
byte[] bytes = new byte[1];
bytes[0] = theByte;
BitArray bits = new BitArray(bytes);
if (bits[0])
return 1;
else
return 0;
}
它很长,我想我可以像这样修剪它:
private int ParseByte(byte theByte)
{
return theByte >> 7;
}
但是,我没有得到与第一个函数相同的值。该字节包含00000000或10000000。我在这里丢失了什么?我使用的操作员不正确吗?
最佳答案
问题在于,在第一个函数中,位[0]返回最低有效位,但是第二个函数返回最高有效位。修改第二个函数以获取最低有效位:
private int ParseByte(byte theByte)
{
return theByte & 00000001;
}
要修改第一个函数以返回最高有效位,应使用bits [7]-而不是bits [0]。
关于c# - C#中的移位混淆,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1002266/