Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.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语言中的逻辑运算符和位操作_C++_C_Computer Science_Logical Operators - Fatal编程技术网

C++ C语言中的逻辑运算符和位操作

C++ C语言中的逻辑运算符和位操作,c++,c,computer-science,logical-operators,C++,C,Computer Science,Logical Operators,我试图做一些练习,但我被困在这一点上,我无法理解发生了什么,也找不到与这一特定问题相关的任何东西(找到了关于逻辑运算符的其他内容,但仍然不够) 编辑:为什么要投否决票,我说得很清楚。没有关于X类型的信息,但我假设是INT,大小也没有描述,我想通过练习我会发现这一点。 a) At least one bit of x is '1'; b) At least one bit of x is '0'; c) At least one bit at the Least Significant Byte

我试图做一些练习,但我被困在这一点上,我无法理解发生了什么,也找不到与这一特定问题相关的任何东西(找到了关于逻辑运算符的其他内容,但仍然不够)

编辑:为什么要投否决票,我说得很清楚。没有关于X类型的信息,但我假设是INT,大小也没有描述,我想通过练习我会发现这一点。

a) At least one bit of x is '1';
b) At least one bit of x is '0';
c) At least one bit at the Least Significant Byte of x , is '1';
d) At least one bit at the Least Significant Byte of x , is '0';
我有解决办法,但如果能理解它们就好了

a) !!x  // What happens here? The '!' Usually is NOT in c

b) !!~x // Again, the '!' appears... The bitwise operand NOT is '~' and it makes the int one's complement, no further realization made unfortunately 

c) !!(x & 0xFF) // I've read that this is a bit mask, i think they take in consideration 4 bytes in X, and this applies a mask at the least significant byte?

d) !!(~x & 0xFF) // Well, at this point i'm lost ...

我不想在大学里逃课,但为了支付学费,我全职工作:(。

你可以在单独的操作周围加上括号,并按顺序应用它们

!(!(~x))
i、 e.!!是2不是

如果不执行某个值,则该值会发生以下情况:

如果
x==0
,则
!x==1
,否则
!x==0

因此,如果你想执行另一个NOT,你需要再次反转真值

如果
x==0
,则
!!x==0
,否则
!!x==1

您可以将其视为获取介于0和1之间的值,其中0表示:“x的任何位都不是‘1’”,1表示:“x的至少一位是‘1’”

另外,
x&0xFF
取变量的最低有效字节。此处有更详细的说明:


假设x是一些
无符号int/short/long
/…并且需要条件(如果,while…):

a) 您必须知道,只有一个值/变量作为条件(没有
a==b
或其他东西)
如果是
0,则为
false
;如果不是
0,则为true。因此,如果
x
不是
0
true
),那么一个
将切换到
0
和另一个
设置为与0不同的值(不一定是旧值,只是不是0)。如果
x
0
,则
最终将再次导致
0
(首先不是
0
,然后是
0
)。
如果至少1位为1,则
x
的整个值不是
0

您要做的是将0转换为0或将一个1位值转换为一个1位值。没错,但是。。。您可以只编写
if(x)
而不是
if(!!x)

b)
~
将每个
0
-位切换到
1
,并将每个
1
切换到
0
。现在您可以再次搜索
1
,因为您希望原始值为
0
。同样的-再说一遍

c和d:
&0xFF
将除最低8位(最低字节)之外的所有位设置为
0


A&B
的结果是一个值,其中,如果位于同一位置的A和B的位均为
1
,则每个位仅为
1
0xff
(十进制255)是将最低8位设置为
1

x的类型是什么?相信我,如果有关于x类型的任何信息,我会把它放进去。没有这方面的任何信息!没有
,答案都是正确的。这表明你省略了一些提问文字。我认为OP对
的双重使用感到困惑。也许你应该解决这个问题。当我使用2个not时会发生什么?这是我的疑问。关于掩码,我想我知道操作数“&”会发生什么