Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 清除最低有效位 问题_C_Bit - Fatal编程技术网

C 清除最低有效位 问题

C 清除最低有效位 问题,c,bit,C,Bit,如何将最低有效位更改为0而不影响值的其余部分,例如:0xFFFFFF,例如在C或Python中?我不是一个数学天才,所以对我来说,找到如何做到这一点是一件很麻烦的事 解决方案 尝试此操作以清除最低有效位: int x = 0xffffffff; ... /* clear least significant bit */ x &= ~1; 设置LSB的步骤 int x = 0xffffffff; ... /* set least significant bit */ x |= 1

如何将最低有效位更改为0而不影响值的其余部分,例如:0xFFFFFF,例如在C或Python中?我不是一个数学天才,所以对我来说,找到如何做到这一点是一件很麻烦的事

解决方案
尝试此操作以清除最低有效位:

int x = 0xffffffff;

...

/* clear least significant bit */
x &= ~1;
设置LSB的步骤

int x = 0xffffffff;

...

/* set least significant bit */
x |= 1;
更改LSB

int x = 0xffffffff;

...

/* change least significant bit */
x ^= 1;

如果要将其扩展到设置/清除/更改位n,请将1更改为1U尝试清除最低有效位:

int x = 0xffffffff;

...

/* clear least significant bit */
x &= ~1;
设置LSB的步骤

int x = 0xffffffff;

...

/* set least significant bit */
x |= 1;
更改LSB

int x = 0xffffffff;

...

/* change least significant bit */
x ^= 1;
如果要将其扩展到设置/清除/更改位n,请将1更改为1U 这很容易理解。。。。 例子: 设x=10010101011

步骤1:x=0 1001010101//x>>1 步骤2:x=1001010101 0//x 这很容易理解。。。。 例子: 设x=10010101011

步骤1:x=0 1001010101//x>>1 步骤2:x=1001010101 0//x使用按位NOT运算符~0计算所有设置为1的位。将其分配给无符号整数变量,并将其左移1位,以便除最低有效位外,所有位均为1。使用按位AND运算符&on x切换最低有效位

unsigned int x = 0xffffffff;
unsigned int y = 0;
x = x & (~0 << 1);
使用按位NOT运算符~0计算所有设置为1的位。将其分配给无符号整数变量,并将其左移1位,以便除最低有效位外,所有位均为1。使用按位AND运算符&on x切换最低有效位

unsigned int x = 0xffffffff;
unsigned int y = 0;
x = x & (~0 << 1);

如果您不想深入研究位运算,只需执行i=i/2*2;。这将清除位0为什么?

如果不想深入研究位运算,只需执行i=i/2*2;。这将清除位0为什么?

将帮助您将帮助您谢谢。谢谢你。x&=~1U这正是你想知道的,而不是试图成为数学天才;那是真的,谢谢!但在我看来,要理解为什么这比其他答案更难。这不是数学上可以解释的,而是与计算机科学相关的。这正是你想要知道的,而不是试图成为数学天才;那是真的,谢谢!但在我看来,要理解为什么这比其他答案更难。这不是数学上可以解释的,而是与计算机科学相关的。