C语言的位运算符和逻辑运算符

位操作是程序设计中对位模式按位或二进制数的一元和二元操作,在许多古老的微处理器上,位运算比加减运算略快,通常位运算比乘除法运算要快很多。
按位取反:~
'~'是一元运算符,用来对一个二进制数按位取反,把0变为1,把1变为0。如下例子所示。

~(10001100)          //表达式
  (01110011)          //结果值

进行取反运算时符号位也会取反
按位与:&
'&'是二元运算符,通过逐位比较两个运算对象,生成一个新值。对于每个位,只要两个运算对象中相同的位有一个0就是0,两个都为1时才为1。

(01101101)&(10001001)          //表达式
(00001001)                                  ;//结果值

按位或:|
'|'是二元运算符,对应位的二进制只要有一个为1就为1,两个都为0才为0。

(10010011)  |  (00111101)          //表达式
(10111111)                                 //结果值

按位异或:^
'^'是二元运算符,两个二进制序列进行异或运算,对应位的二进制相同为0,相异为1。

(10010011) ^ (00111101)           //表达式
(10101110)                                //结果值

逻辑运算符一般在if语句中使用,包括逻辑与(&&)、逻辑或(||)、逻辑非(!)
逻辑与(&&):
参与运算的两个表达式都为真时,结果才为真,否则为假。
在c语言中,0为假,非0就为真

	int a = 10;
	int b = 0;
	if (a && b)
	{
		printf("hehe\n");
	}

a的值是10,为真,b的值是0,为假。
此时a&&b的结果就是0,为假,不会输出hehe。

	int a = 10;
	int b = 5;
	if (a && b)
	{
		printf("hehe\n");
	}

当把b改成5时,此时b也为真,逻辑与两侧都为真,此时a&&b结果是1,输出hehe。
逻辑与运算判断出第一个表达式为假后,后面的表达式就不会再计算了

	int a = 0,b = 5,c = 10;
	int i = a && b && c;

此时a=0为假,i的值就是0,不会对b和c两个表达式进行运算了。
逻辑或(||):
参与运算的表达式有一个为真时结果就是真,全为假时才是假。

	int a = 10;
	int b = 0;
	if (a || b)
	{
		printf("hehe\n");
	}

a为真,b为假,只要有一个真结果就是真,此时输出hehe。

逻辑或运算判断出第一个表达式为真后,后面的表达式就不会再计算了
逻辑非(!):
非假即为真,非真即为假,就是指本来值的反值。

	int a = 10;
	if (!a)
	{
		printf("hehe\n");
	}

a=10为真,!a运算后结果为0,不会打印hehe。
当a = 0时,!a为1,此时打印hehe。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北川_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值