前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C语言】位操作符详解

【C语言】位操作符详解

作者头像
Kevin_17
发布2024-03-19 15:02:32
860
发布2024-03-19 15:02:32
举报
文章被收录于专栏:Base_CDNKevinBase_CDNKevin

C语言中的位操作符有以下:

& | ^//按位与 //按位或 //按位异或 位运算符是计算两者之间的补码,然后得到的是计算后补码转化为的原码进行输出表示 注:他们的操作数必须是整数。

1、按位与( & )

以下为简单举例:

代码语言:javascript
复制
#include<stdio.h>

int main()
{
	int a = 3;
	int b = -5;
	
	int c = a | b;
	
	return 0;
}

对于以上代码的运算,在下面进行拆分讲解。分别先列出a和b的原码,然后计算得到补码(原码取反+1)

000000000000000000000011 a原码 000000000000000000000011 a补码(正数的补码是他本身) 100000000000000000000101 b原码 111111111111111111111111010 b反码 111111111111111111111111011 b补码

在得到二者补码后将补码进行按位与运算。即对应位置都为1才为1,有一个是0即为0,具体运算如下:

000000000000000000000011 a补码 111111111111111111111111011 b补码 000000000000000000000011 c补码 在经过从补码变为原码的过程: 111111111111111111111111101 c原码

所以a和b按位与最终得到的c二进制为111111111111111111111111101。

2、按位或( | )

举例:

代码语言:javascript
复制
#include<stdio.h>

int main()
{
	int a = 3;
	int b = -5;
	
	int c = a | b;
	printf("%d\n",c);

	return 0;
}

与按位与一样,按位或同样是先计算出a和b的补码然后将补码进行计算,然后得到的补码再转换为原码才是真正c的值

000000000000000000000011 a原码 000000000000000000000011 a补码(正数的补码是他本身) 100000000000000000000101 b原码 111111111111111111111111010 b反码 111111111111111111111111101 b补码

按位或的计算方法是两个二进制序列对应位置有1则为1,得到补码然后再转化为原码

000000000000000000000011 a补码 111111111111111111111111011 b补码 111111111111111111111111011 c补码 在经过从补码变为原码的过程:(负数取反,符号位不变) 100000000000000000000101 c原码

所以得到的按位或计算得到的值为100000000000000000000101。

运算结果显示:

3.按位异或( ^ )

依旧用实例来进行讲解

代码语言:javascript
复制
#include<stdio.h>

int main()
{
	int a = 3;
	int b = -5;
	
	int c = a ^ b;
	printf("%d\n",c);

	return 0;
}

000000000000000000000011 a原码 000000000000000000000011 a补码(正数的补码是他本身) 100000000000000000000101 b原码 111111111111111111111111010 b反码 111111111111111111111111101 b补码

按位异或运算遵循的原则是,相同位为0,相异位为1,详细运算如下:

000000000000000000000011 a补码 111111111111111111111111011 b补码 111111111111111111111111000 c补码 在经过从补码变为原码的过程:(负数取反,符号位不变) 100000000000000000001000 c原码

所以得到的c的原码为100000000000000000001000。

运算结果为:

4.结语

如有遗漏或问题请直接指出,感谢阅读。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、按位与( & )
  • 2、按位或( | )
  • 3.按位异或( ^ )
  • 4.结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档