最高有效半字节的十六进制
Hex of most significant nibble
我在按位操作方面遇到了问题。
要执行的操作:x 的最高半字节的十六进制值等于 y(假设 0 <= y <= 15)
限制:不得使用等式 (==) 或不等式 (!=) 测试、相对比较运算符、除法、模数和乘法、条件。
问题:我需要制作我的函数,以便当 msb = y 时它 returns 1,如果它不是真的 0。但是,即使我 运行 它与0xff。如果有人能指出我正确的方向,那就太好了。谢谢。
int sig_nib(int x, int y){
int shifright = x >> 27;
int result = shifright & y;
return (result ^ y);
}
愚蠢的限制。谁破坏了你的编译器?
应该这样做:
bool sig_nib(int x, int y)
{
const int top4 = (x >> 28) & 0xf;
return !(top4 ^ y);
}
它使用布尔反转 (!
) 重新解释按位异或的整数结果。
我在按位操作方面遇到了问题。
要执行的操作:x 的最高半字节的十六进制值等于 y(假设 0 <= y <= 15)
限制:不得使用等式 (==) 或不等式 (!=) 测试、相对比较运算符、除法、模数和乘法、条件。
问题:我需要制作我的函数,以便当 msb = y 时它 returns 1,如果它不是真的 0。但是,即使我 运行 它与0xff。如果有人能指出我正确的方向,那就太好了。谢谢。
int sig_nib(int x, int y){
int shifright = x >> 27;
int result = shifright & y;
return (result ^ y);
}
愚蠢的限制。谁破坏了你的编译器?
应该这样做:
bool sig_nib(int x, int y)
{
const int top4 = (x >> 28) & 0xf;
return !(top4 ^ y);
}
它使用布尔反转 (!
) 重新解释按位异或的整数结果。