C语言:位运算符----与(&),或(|),非(~),异或(^),左移(<<)和右移(>>)

2024-04-01 1027阅读

C语言 基础开发----目录


一、位运算符----简介

位运算符 就是按二进制位进行运算。

C语言中位运算符主要包括六种,具体如下:

与(&),或(|),非(~),异或(^),左移()

位运算符含义说明
&按位与有0为0,双1为1: 1&1=1,1&0=0,0&1=0,0&0=0
只有两者对应位都为1,结果对应位才为 1,否则为 0
I按位或有1为1,双0为0: 1I1=1,1I0=1,0I1=1,0I0=0
只要两者对应位有一个为1,则结果对应位就为 1,否则为 0
~按位取反1变0,0变1: ~1=0, ~0=1
如果该位为 1,则结果对应位为 0
如果该位为 0, 则结果对应位为 1
^按位异或不同为1,相同为0: 1^1=0, 1^0=1, 0^1=1, 0^0=0
只有两者对应位不一样,则结果对应位才为 1, 否则为 0
右移右移n位就是除以2的n次方
无符号数据:所有位依次向右移动,高位补0,低位丢弃
有符号数据:所有位依次向右移动,符号位不变,低位丢弃

二、位运算符----详细说明

1. 位与运算(&):有0为0,双1为1

只有两者对应位都为1,结果对应位才为 1,否则为 0。

变量十六进制数值二进制数
a0x030000 0011
b0x0A0000 1010
a&b0x020000 0010

举例说明:

#include 
int main(int argc, char *argv[])
{
	unsigned char a=0x03,b=0x0A;
	
	printf("a=0x%X\n",a);
	printf("b=0x%X\n",b);
	printf("a&b=0x%X\n",a&b);
	
	return 0;
}

运行结果如下:

C语言:位运算符----与(&),或(|),非(~),异或(^),左移(<<)和右移(>>)

2. 位或运算(|):有1为1,双0为0

只要两者对应位有一个为1,则结果对应位就为 1,否则为 0。

变量十六进制数值二进制数
a0x030000 0011
b0x0A0000 1010
aIb0x0B0000 1011

举例说明:

#include 
int main(int argc, char *argv[])
{
	unsigned char a=0x03,b=0x0A;
	
	printf("a=0x%X\n",a);
	printf("b=0x%X\n",b);
	printf("a|b=0x%X\n",a|b);
	
	return 0;
}

运行结果如下:

C语言:位运算符----与(&),或(|),非(~),异或(^),左移(<<)和右移(>>)

3. 位取反运算(~):1变0,0变1

如果该位为 1,则结果对应位为 0。

如果该位为 0, 则结果对应位为 1。

变量十六进制数值二进制数
a0x030000 0011
~a0xFC1111 1100

举例说明:

#include 
int main(int argc, char *argv[])
{
	unsigned char a=0x03,b=~a;
	
	printf("a=0x%X\n",a);
	printf("b=0x%X\n",b);
	
	return 0;
}

运行结果如下:

C语言:位运算符----与(&),或(|),非(~),异或(^),左移(<<)和右移(>>)

4. 位异或运算(^):不同为1,相同为0

只有两者对应位不一样,则结果对应位才为 1, 否则为 0。

变量十六进制数值二进制数
a0x030000 0011
b0x0A0000 1010
a^b0x090000 1001

举例说明:

#include 
int main(int argc, char *argv[])
{
	unsigned char a=0x03,b=0x0A;
	
	printf("a=0x%X\n",a);
	printf("b=0x%X\n",b);
	printf("a^b=0x%X\n",a^b);
	
	return 0;
}

运行结果如下:

C语言:位运算符----与(&),或(|),非(~),异或(^),左移(<<)和右移(>>)

5. 左移运算( unsigned char a=0x03; printf("a=0x%X\n",a); printf("a

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]