概述
c语言中,逻辑运算与位运算很容易混淆,但是它们的功能是完全不同的。逻辑运算认为所有的非零的参数都为TRUE,参数0表示false,它们返回1或0.
&&与||和&与|重要的区别是,如果第一个参数求值能确定表达式的结果,那么逻辑运算符就不会对第二个参数求值。
深入理解计算机系统第二章P36页,c语言中的逻辑运算答案
#include<stdio.h>
int main(){
int a= 0x66;
int b = 0x39;
printf("%x,%x,%x,%x,%x,%x,%x,%x",a&b,a|b,~a|~b,a&!b,a&&b,a||b,!a||!b,a&&~b);
return 0;
}
依次为ox20,ox7f,oxffffffdf,ox01,0x01,0x00,ox01
逻辑运算包括左移和右移,其中右移又包括逻辑右移和算术右移
逻辑右移与算术右移区别:逻辑右移在左端补k个0,算术右移在左端补k个最高有效位的值
注意是单个移动,而不是作为整体,看下面的例子,每个[]进行移动,而不是[][]两个一起移动,对于无符号数据必须是逻辑的,对于有符号数默认是算术的
x = [01100011][10010101]
x>>4(逻辑右移) [00000110][00001001]
算术右移 [00000110][11111001]
最后
以上就是笨笨豌豆为你收集整理的c语言逻辑运算与位运算区别的全部内容,希望文章能够帮你解决c语言逻辑运算与位运算区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复