21.《C语言》——【位操作符】

news2024/11/16 0:39:36

🌻开场语

亲爱的读者,大家好!我是一名正在学习编程的高校生。在这个博客里,我将和大家一起探讨编程技巧、分享实用工具,并交流学习心得。希望通过我的博客,你能学到有用的知识,提高自己的技能,成为一名优秀的程序员。如果你有任何疑问或建议,请随时在评论区留言,让我们一起成长进步!现在,让我们开始这场知识之旅吧!


在这里插入图片描述
个人主页:FEN03
文章专栏:C语言


文章目录

  • 🌻开场语
  • 🌻前言
  • 🌻位操作符
    • 1. 🌹&(按位与)
    • 2. 🌹| (按位或)
    • 3. 🌹^(按位异或)
    • 4. 🌹~(按位取反)
  • 🌻总结
  • 🌻结束语


🌻前言

本文章,将会逐一介绍什么是位操作符,如何去用位操作符。文章内容仅是个人学习见解,如有错误,还请各位大佬指出!


🌻位操作符

位操作符有4种:

  1. &(按位与)
  2. | (按位或)
  3. ^(按位异或)
  4. ~(按位取反)

位操作符都是对二进制位进行操作的
注意:位操作符只能用于整数


1. 🌹&(按位与)

按位与是一个双目运算符,按位与是对二进制位进行操作,那么它的操作规则是:对位的二进制位,有0为0,相同为1则为1

例子1:

#include<stdio.h>
int main()
{
	int a = -3; 
	int b = 6;  
	int c = a & b; 
	printf("%d\n", c); 
	return 0; 
}

运行结果:

在这里插入图片描述

为什么会得到4呢?
解析:

  1. 因为是对二进制位操作的,所以我们需要写出数值的二进制位,-3的二进制位是:
    在这里插入图片描述

  2. 6的二进制位:在这里插入图片描述

  3. 进行按位与: 在这里插入图片描述

最终的结果得到:4


2. 🌹| (按位或)

按位或是一个双目运算符,是对二进制位操作,规则是:对位的二进制位,有1为1,相同0为0

例子1:

#include<stdio.h>
int main()
{
	int a = -6;  
	int b = 3;  
	int c = a | b;  
	printf("%d\n", c); 
	return 0;
}

运算结果:

在这里插入图片描述

是怎么得到5呢?
解析:

  1. 首先,我们需要写出数值的二进制形式,-6的二进制:
    在这里插入图片描述
  2. 然后写出3的二进制:
    在这里插入图片描述
  3. 进行按位或:
    在这里插入图片描述
    这样最终的结果就能够得到:-5

3. 🌹^(按位异或)

按位异或也是双目运算符,也是对二进制位操作,规则是:相同为0,相异为1

例子1:

#include<stdio.h>
int main()
{
	int a = -4; 
	int b = 6; 
	int c = a ^ b; 
	printf("%d\n", c);
	return 0;
}

运行结果:

在这里插入图片描述

为什么能够得到:-6
解析:

  1. 写出-4的二进制位:
    在这里插入图片描述
  2. 写出6的二进制:
    在这里插入图片描述
  3. 进行按位异或:
    在这里插入图片描述

最终得到的值是:-6


对于按位异或,有一个知识补充:

例子1:

#include<stdio.h>
int main()
{
	int a1 = 1;  
	int a2 = 2; 
	int a3 = 3; 
	int a4 = 4;

	int b = 0;

	int c1 = a1 ^ b;  
	int c2 = a2 ^ b;  
	int c3 = a3 ^ b;  
	int c4 = a4 ^ b; 

	printf("%d\n", c1);  
	printf("%d\n", c2);  
	printf("%d\n", c3);  
	printf("%d\n", c4);  
	return 0; 
}

运行结果:

在这里插入图片描述

看结果,我们可以得出,n ^ 0 = n ,也就是一个数如果按位异或0,得到的结果是本身。


例子2:

#include<stdio.h>
int main()
{
	int a = 5;
	int b = a ^ a;
	printf("%d\n", b); 

	int a1 = 6;
	int b1 = a1 ^ a1; 
	printf("%d\n", b1); 

	int a2 = 4;
	int b2 = a2 ^ a2;
	printf("%d\n", b2); 

	return 0; 
}

运行结果:

在这里插入图片描述

我们可以得出结论:n ^ n = 0,也就是一个数如果按位异或本身,得到的结果是0


4. 🌹~(按位取反)

按位取反是单目运算符,同样的是对二进制位进行操作,规则是:0为1,1为0

例子1:

#include<stdio.h>
int main()
{
	int a = 8;  
	int b = ~a;    
	printf("%d\n", b);  
	return 0; 
}

运算结果:

在这里插入图片描述

是怎么得到:-9 的呢?
解析:

  1. 写出8的二进制:
    在这里插入图片描述
  2. 进行按位取反:
    在这里插入图片描述

最终的结果就是:-9


🌻总结

  1. &(按位与),|(按位或),^(按位异或),这三个都是双目运算符,操作数是2个。
  2. ~(按位取反)是单目运算符,操作数是1个。
  3. 这些操作符都需要了解规则,其中按位异或复杂一点,需要多了解。

🌻结束语

非常感谢您花时间阅读我的博客,希望我的分享能为您带来收获。如果您对本文有任何想法或疑问,欢迎在评论区留言交流。如果您喜欢我的博客,请继续关注,我会定期更新更多精彩内容。最后,别忘了行动起来的力量,让我们一起实践这些方法,见证自己的成长和进步!

再见,祝您生活愉快!

如有错误,或者疑惑,还请评论区留言,或者私信即可,感谢支持!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1892515.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从数据洞察到智慧决策:数字孪生技术在智慧水利中的应用实践,为水库管理提供强有力的数据支撑和智能分析

目录 一、引言 二、数字孪生技术的核心与原理 三、数字孪生技术在智慧水利中的应用场景 1、水库管理的挑战与需求 2、数字孪生水库管理系统的构建 四、数字孪生技术在水库管理中的具体应用案例 1、洪水预测与模拟 2、水资源配置与调度 3、大坝安全监测与评估 4、生态环…

notepad++ 中文乱码 出现小方格

从word文档直接拷贝过来的文字&#xff0c;到notepad 中文乱码 出现小方格 &#xff1a; 方法&#xff1a;设置-语言格式设置&#xff0c;字体样式更改为宋体&#xff0c;勾选“使用全局字体”&#xff0c;点保存并关闭&#xff0c;则ok

组件丰富、支持2/3D数据可视化的编辑器平台软件?

数据可视化编辑器通常用于创建交互式的图表和模型&#xff0c;可以帮助用户以更直观的方式展示数据。一些在线平台软件提供了丰富的组件&#xff0c;支持2D和3D数据可视化&#xff1a; 1、Plotly - 提供了多种语言的库&#xff0c;支持在线创建交互式图表&#xff0c;包括2D和…

实验六(1) SQL数据查询—单表查询

题目 打开ecommerce数据库&#xff0c;用SQL语句完成下列各项查询要求&#xff1a; 查询供应商表supplier中所有供应商的信息查询供应商表supplier中所有北京地区供应商的名称supname和联系电话telephone查询商品类别表category中所有商品类别的信息&#xff0c;并以“类别编号…

基于主流SpringBoot进行JavaWeb开发的学习路线

目录 一、学习路线 &#xff08;1&#xff09;第一部分&#xff08;Web前端开发的技术栈&#xff09; &#xff08;2&#xff09;第二部分&#xff08;Web后端开发&#xff09; 二、学习之后必备的技能 三、学习Web开发的基础与未来的收获 学完这一类知识目标&#xff1a;…

Markdown编辑器的基本语法

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Stylized Modular Character Male(程式化的模块化角色-男)

一套程式化的角色模块化部件。 在这样的插槽中定制: 头 躯干 手 裤子 每个插槽都有 2 到 5 个在 URP 中工作的 PBR 材料的选项。 该项目基于官方 Unity 标准资产包中的 Ethan 默认角色。 不包含动画。 皮肤网格的 SSS 是由自发光贴图伪造的。 如果您不想要额外的发光效果,请禁…

C++:求梯形面积

梯形面积 已知上底15厘米&#xff0c;下底25厘米&#xff0c;问梯形面积值是多少&#xff1f; #include<iostream> using namespace std; int main() {//梯形的面积公式&#xff08;上底下底&#xff09; 高 2//上底变量、下底变量int s,d,h,m;s15;d25;h 2*150 * 2/s ;…

[笔记] 卷积03 - 运算的对称性 时域构建高通滤波器的失败尝试

1.卷积运算具备足够好的对称性 1.在计算卷积时&#xff0c;两个函数的位置是可以颠倒的&#xff0c;对吧&#xff1f; 在卷积运算中&#xff0c;确实可以对参与卷积的两个函数进行颠倒。这是因为卷积的定义是通过一个函数与另一个函数的翻转后的形式进行积分运算。具体来说&a…

股价持续低迷,业绩颓势不减,冀光恒难救平安银行?

文&#xff5c;新熔财经 作者&#xff5c;宏一 周一一上班&#xff0c;就听到旁边的同事感慨今年股市行情很不错&#xff0c;尤其是银行股&#xff0c;上半年累计上涨了17.02%&#xff0c;是涨幅最大的板块。 听到这里&#xff0c;我美滋滋地打开自己的账户&#xff0c;结…

21_硬件电路基础

目录 组合逻辑电路 组合逻辑电路原理 真值表 布尔代数 门电路 译码器 发光二极管LED 液晶字符显示器LCD 数据选择器 数据分配器 多路开关 时序逻辑电路 时序逻辑电路原理 时钟信号 触发器 电位触发方式触发器 边沿触发方式触发器 寄存器 移位器 计数器 总线…

Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享

本书从一个系统化的视角&#xff0c;秉承大道至简的主导思想&#xff0c;介绍Spark中最值得关注的内 容&#xff0c;讲解Spark部署、开发实战&#xff0c;并结合Spark的运行机制及拓展&#xff0c;帮读者开启Spark技术之旅。 Spark大数据处理&#xff1a;技术、应用与性能优化…

Python: Can‘t pop from an empty list

在 Python 中&#xff0c;如果尝试从一个空列表中弹出&#xff08;pop&#xff09;元素&#xff0c;会引发 IndexError 异常。这是因为 pop() 方法试图移除并返回列表中的最后一个元素&#xff0c;但在列表为空时无法执行此操作。那么具体情况可以跟着我看看下面文章。 1、问题…

Avalonia应用在基于Linux的国产操作deepin上运行

deepin系统介绍 deepin(原名Linux Deepin)致力于为全球用户提供美观易用&#xff0c;安全可靠的 Linux发行版。deepin项目于2008年发起&#xff0c;并在2009年发布了以 linux deepin为名称的第一个版本。2014年4月更名为 deepin&#xff0c;在中国常被称为“深度操作系统”。 …

一个项目学习Vue3---Vue计算属性

观察下面一段代码&#xff0c;学习Vue计算属性 <template><div><span>用户大于10岁的数量&#xff1a;{{ userVue.filter(user>user.age>10).length}}</span><span>用户大于10岁的数量2&#xff1a;{{ userAgeltTen}}</span><sp…

使用QStandardItemModel、QItemSelectionModel 绑定到tableView

1、使用QStandardItemModel、QItemSelectionModel 绑定到tableView&#xff0c;展示tableView的新增、插入&#xff0c;删除 、生成文档操作&#xff1b; 2、文本文件的读写 3、遍历QStandardItemModel 4、遍历 QItemSelectionModel 布局 .h #ifndef TABLEMODELVIEWEXAMPLE_H…

windows机器通过证书方式登录linux主机

1. 正常连接需要输入密码 ssh root1.1.1.1 2. 在Windows上生成SSH密钥对&#xff08;如果你还没有的话&#xff09;&#xff1a; ssh-keygen 3. scp将id_rsa.pub传输到对应的主机 4.对应机器上查看 5.从windows上免密登录

LiveNVR监控流媒体Onvif/RTSP用户手册-分屏展示:分组、轮播、四分屏、九分屏、十六分屏

LiveNVR监控流媒体Onvif/RTSP用户手册-分屏展示:分组、轮播、四分屏、九分屏、十六分屏 1、分屏展示1.1、选择通道1.2、多分屏1.3、分组1.4、轮播 2、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、分屏展示 1.1、选择通道 1.2、多分屏 支持 单屏、四分屏、九分屏、十六分屏 ![请添…

昇思25天学习打卡营第16天|ShuffleNet图像分类

学AI还能赢奖品&#xff1f;每天30分钟&#xff0c;25天打通AI任督二脉 (qq.com) ShuffleNet图像分类 当前案例不支持在GPU设备上静态图模式运行&#xff0c;其他模式运行皆支持。 ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和Mobile…

4D 生物打印智能生物墨水需要具备哪些关键特性?

4D 生物打印智能生物墨水需要具备哪些关键特性&#xff1f; 1. 可打印性 (Printability) MEB&#xff1a;生物墨水需要具有良好的流变学特性&#xff0c;例如高粘度、剪切稀化行为和触变性。打印参数&#xff08;如喷嘴直径、打印速度和层厚&#xff09;会影响打印性能。 喷…