C语言中的按位运算符和逻辑运算符?
发布网友
发布时间:2022-04-19 22:43
我来回答
共4个回答
热心网友
时间:2023-10-18 05:33
&&是逻辑与,计算机的逻辑无非两种,0和非0,7和8都是非0,那么7&&8就是非0,也就是真了。
&是位操作,即按两个操作数的二进制每一位进行与运算
7的二进制:00000111
8的二进制:00001000
与运算后为:00000000,结果就是假了
热心网友
时间:2023-10-18 05:33
二者是不同的概念。
逻辑运算是针对真(1)和假(0)两个逻辑值来进行的操作。具体到数字时,0对应假。非零对应真。故而7&&8结果是真。
位运算是整数特有的造作,是对操作数的二进制编码的每一位进行运算
热心网友
时间:2023-10-18 05:34
7: 00000111
8: 00001000
按位与就是每位相与,答案是
7&8:00000000
当然是假
热心网友
时间:2023-10-18 05:34
预备知识:
逻辑值即bool值,要么是true,要么是false.
算数值,也就是我们通过加、减、乘、除、异或、同或等运算后得到的数值。
当然,在一定的场合中,逻辑值和算数值是可以转换的。
C语言归定:
逻辑值转算数值:true等价于1,false等价于0
例:
void main()
{
bool b=true;
bool c=false;
printf("%d %d",b,c);
}
输出:1 0
算数值转逻辑值时:
0等价于false,非0等价于true.
注意:非0等价于true.也就是说负数也等价于true的。
---------------
要我们来看书上的这个例子.
int x=7;
if (x&&8)
{...}
由此可知,7>0即为true,8>0也为true。那么,true&&true当然也是true了。
-------------
int x=7; //7的二进制写法是 0111b
if (x&8)//8的二进制写法是 1000b
{...}
那么,当111b和1000b取与操作的时候,当然是0了。那么,在逻辑表里就是false了