一起使用&和〜运算符

我遇到了一些将&~运算符一起使用的代码。该代码将给定的二进制字符串作为其整数-在这种情况下为11100001001-然后执行此操作...

comp.setflags(slot,(comp.getflags(slot)&~flags.READONLY));

我认为是将原始二进制字符串号作为其整数值,然后用另一个整数&&'将其整数化,我相信是1,但不确定。因此,基本上是:

int i = int_1 &~ int_2; 

新的二进制字符串是11100001000。

一旦该位反转,它就不会在对象(“插槽”)上的后续运行中作用于新的位字符串;

第一次:
之前:11100001001
之后:11100001000

第二次:
之前:11100001000
之后:11100001000

所有后续时间:
之前:11100001000
之后:11100001000

这正是我需要执行的代码。我只是想了解&~的含义,它的定义以及如何将需要翻转的位置翻转一下,然后在该位置单独放置。

quhongliang 回答:一起使用&和〜运算符

这些是两个单独的运算符&~,而不是一个单独的组合&~运算符。认为是:

int i = int_1 & (~ int_2); 

首先,~运算符(按位补数运算符)翻转其操作数(int_2)上的所有位。如果操作数的值为1(000 ... 01),则结果为111 ... 10,即除最后一位以外的所有位1

然后,&运算符(按位运算符)进行操作,将两个操作数中标记为1的所有位保持为1。结果是,如果相应位是右侧操作数(int_1上的1,则左侧操作数(int_2)中的所有位均不受影响,左侧操作数中的所有位均不受影响如果右侧有对应的0,则清除(设置为0)。最终结果是清除了int_1的最后一位。

如果第二次应用此操作,结果将是相同的,因为最后一位已被清除。

本文链接:https://www.f2er.com/3141077.html

大家都在问