将int变量的最后n位设置为零的C表达式
换句话说,将整数变量x的最后5位设置为零,并且必须是可移植的形式将int变量的最后n位设置为零的C表达式,c,unix,C,Unix,换句话说,将整数变量x的最后5位设置为零,并且必须是可移植的形式 我试着用来做,对于32位整数,应该可以使用&(按位and)运算符屏蔽掉这些位 x & 0xFFFFFFE0. 您可以为此使用按位和& int x = 0x00cb; x = x & 0xffe0; 这将保留较高的位并将较低的位设置为零。创建一个掩码,如果最后的n整数是按位与整数进行and运算,则该掩码将其清空: x &= ~ ((1 << n) - 1); x&=~(1)当n=sizeof
我试着用来做,对于32位整数,应该可以使用&(按位and)运算符屏蔽掉这些位
x & 0xFFFFFFE0.
您可以为此使用按位和
&
int x = 0x00cb;
x = x & 0xffe0;
这将保留较高的位并将较低的位设置为零。创建一个掩码,如果最后的
n
整数是按位与整数进行and运算,则该掩码将其清空:
x &= ~ ((1 << n) - 1);
x&=~(1)当n=sizeof(int)@WingerSendon时失败:你的意思是当n==CHAR\u BIT*sizeof(int)
时?是的,但是屏蔽掉一些等于或大于值位宽度的位会将其设置为零。如果需要,这种特殊情况很容易被捕获。