我想对我正在使用的第三方函数进行双重检查,并且我不确定我是否正确地计算出按位逻辑。有人可以在每个场景中为变量'intValue'提供一系列值,这些值会导致每个条件返回true吗?谢谢!
if ((intValue < 0 && ((intValue & 0xFFFFFF80) == 0xFFFFFF80)) ||
(intValue & 0x0000007F) == intValue) {
}
else if ((intValue < 0 && ((intValue & 0xFFFF8000) == 0xFFFF8000)) ||
(intValue & 0x00007FFF) == intValue) {
}
else if ((intValue < 0 && ((intValue & 0xFF800000) == 0xFF800000)) ||
(intValue & 0x007FFFFF) == intValue) {
}
else {
}
答案 0 :(得分:2)
if (intValue == (SByte)intValue) {
// matches -128...127, i.e. values that fit in one byte
}
else if (intValue == (Int16)intValue) {
// matches -32768..32767, values that fit in two bytes
}
else if (intValue == ((intValue << 8) >> 8)) {
// matches -2**23..(2**23-1), values that fit in three bytes
}
else {
// matches -2**31..(2**31-1), values that need four bytes
}
请注意,如果变量类型已签名,则所有intValue < 0
测试都是完全冗余的。
答案 1 :(得分:0)
这是一个提示:
int intValue = int.Parse("FFFFFF80", System.Globalization.NumberStyles.HexNumber);
请参阅: