C语言中的按位运算符和逻辑运算符?

C语言中的按位运算符和逻辑运算符的区别?书上有个例子:x=7,x&&8的值为真,x&8的值为假。怎模理解呢?

&&是逻辑与,计算机的逻辑无非两种,0和非0,7和8都是非0,那么7&&8就是非0,也就是真了。
&是位操作,即按两个操作数的二进制每一位进行与运算
7的二进制:00000111
8的二进制:00001000
与运算后为:00000000,结果就是假了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-12-24
二者是不同的概念。
逻辑运算是针对真(1)和假(0)两个逻辑值来进行的操作。具体到数字时,0对应假。非零对应真。故而7&&8结果是真。
位运算是整数特有的造作,是对操作数的二进制编码的每一位进行运算
第2个回答  2007-12-24
7: 00000111
8: 00001000
按位与就是每位相与,答案是
7&8:00000000
当然是假
第3个回答  2007-12-24
预备知识:
逻辑值即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了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网