C - 需要比较nint的最低位是否相等.
即n = 4;
xxxx1001 == xxxx1001(x无所谓)
即n = 2; xxxxxx01 == xxxxxx01
不考虑不使用蒙版的好方法,=).
Guf*_*ffa 25
从位数创建掩码:
int mask = (1 << bits) - 1;
Run Code Online (Sandbox Code Playgroud)
然后你用它来比较值:
if ((a & mask) == (b & mask))
Run Code Online (Sandbox Code Playgroud)
如果你真的不想使用蒙版(不是说它有什么问题!),那么你可以使用shift-left操作符:
if( a << m == b << m )
{
}
Run Code Online (Sandbox Code Playgroud)
其中m是总的位数减去你感兴趣的数字.也就是说,在问题的例子中,m是4(即8-4).
编辑:要清楚 - 我假设问题表明给定使用的格式为8位整数(例如,xxxx1001),但解决方案是通用的,因为它适合任何大小的整数.要确定整数中的位数,请使用8*sizeof(type),其中type可以是int,short,long等.
您可以使用模运算符。例如 n = 4 并且您必须对 x 和 y 进行整型:
if((x%16) == (y%16)){ ....
Run Code Online (Sandbox Code Playgroud)
希望这对您有帮助。
缺口