【C语言】位运算

本文详细介绍了C语言中的位逻辑运算符(包括按位取反、按位与、按位或、按位异或)以及移位运算符(左移和右移),并提供了示例代码和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【C语言】位运算



前言

可以使用C对变量中的个别位进行操作。您可能对人们想这样做的原因感到奇怪。这种能力有时确实是必须的,或者至少是有用的。C提供位的逻辑运算符和移位运算符。在以下例子中,我们将使用二进制计数法写出值,以便您可以了解对位发生的操作。在一个实际程序中,您可以使用一般的形式的整数变量或常量。例如不适用00011001的形式,而写为25或者031或者0x19。


一、位逻辑运算符

4个位运算符用于整型数据,包括char.将这些位运算符成为位运算的原因是它们对每位进行操作,而不影响左右两侧的位。请不要将这些运算符与常规的逻辑运算符(&& 、||和!)相混淆,常规的位的逻辑运算符对整个值进行操作。

1.按位取反: ~

一元运算符~将每个1变为0,将每个0变为1

例如:~(10010110)
01101001

//按位取反 ~
void test01()
{
   
	int num = 2;

	//00000000 00000000 00000000 00000010	
	//~按位取反后得到源码:11111111 11111111 11111111 11111101
	//计算机用补码方式存数据 负数的补码=源码符号位不变其余按位取反在加一
	//补码:10000000 00000000 00000000 00000011	//-3
	printf("~num = %d\n", ~num);	//-3
}

2.按位与(AND): &

二进制运算符&通过对两个操作数逐位进行比较产生一个新值。对于每个位,只有两个操作数的对应位都是1时结果才为1。否则为0。

例如:(10010011)&(01010010)=00010010

C也有一个组合的位与-赋值运算符:&=。下面两个将产生相同的结果:

val &= 0377
val = val & 0377

//按位与 &
void test02
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值