位操作符详解(C语言)

前言
C语言中的位操作符是用来对数据的二进制表示进行位级操作的运算符。这些操作符包括位与(&)、位或(|)、位异或(^)、位取反(~),这些位操作符可以用来进行各种位级操作,如获取二进制表示中的特定位、将特定位设置为0或1、交换变量的值等。它们在底层编程、位级编码和优化算法中经常被使用。今天我就来给大家分享关于位操作符的使用。
在这里插入图片描述

文章目录

  • 1,&
  • 2,|
  • 3,^
  • 4,~
  • 尾声

1,&

&是按位与操作符可以对两个操作数的二进制表示进行位与操作,首先我们都知道二进制只有数字0和1,那么&是怎么操作的呢?
我们举个例子,下面是8和11的二进制。
8: 1000
11:1011

&叫做按位与,所以我们要按照两个二进制对应的位置进行与操作如8的1对应11的1,0对应0,0对应1,0对应1(我是按从前往后的顺序说的便于理解)。
当某一位都是1的时候,与操作后的结果为1,当一方是1一方是0时,结果为0,当双方都是0时结果还是0,我们可以将其想象成一个串联电路,0和1时开关,当为1时开关闭合电流才能通过。
在这里插入图片描述

所以8&11的结果为1000即8

2,|

|是按位或操作符,与&类似,我们再用8和11举个例子
8: 1000
11:1011

当某一位双方都是1时,结果为1,当一方为1一方为0时,结果为1,当双方都是0时,结果为0.这我们就可以想象成一个并联电路,只要开一个开关,电流就能流通。
在这里插入图片描述

所以8|11的结果为1011即11

3,^

^是按位异或操作符,我们还是用8和11来举例子。
8: 1000
11:1011

当某一位双方都为1或者都为0时,结果为0,当双方不同(即一个是1一个是0)时,结果为1。即某一位相同时,结果为0,不同时结果为1.
所以8&11的结果为0011,即结果为3。

4,~

~是按位取反操作符,拿1和-1举个例子。
1: 00000000 00000000 00000000 00000001
-1:111111111 11111111 11111111 11111111

取反的意思就是0变1,1变0,所以1和-1按位取反后会分别变成:
1:11111111 11111111 11111111 11111110
-1:00000000 00000000 00000000 00000000

那么我们能发现1 = (-1)+1,-1=(1)+1,这样就可以轻松实现正数和负数的转换了。

尾声

关于位操作符的分享我们就到这里,如果觉得博主讲的不错,千万不要忘记给博主一个关注,点赞,收藏哦~,小伙伴们,我们下期再见!

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

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

相关文章

【汇编先导】-- 2

汇编先导 6. 寄存器 存储数据:CPU > 内存 > 硬盘(固态、机械) CPU还可分为: 32位CPU 8 16 32 64位CPU 8 16 32 64(增加了寻址能力) 通用寄存器 # 32位的通用寄存器只有8个 # 可以在任意软件的底层看到 # 通用寄存器可以存储任何值存值的范围…

Cesium 实战 - OD 通信线 - 移动连接线

Cesium 实战 - OD 通信线 - 移动连接线 OD 通信线 - 移动连接线核心代码完整代码在线示例 在项目中,实现完卫星通信线之后,又有一个新需求,需要通信线根据火箭移动而移动,相当于追踪效果,思考之后通过 Entity Callback…

【Python可视化系列】一文教会你绘制美观的直方图(理论+源码)

一、引言 前面我详细介绍了如何绘制漂亮的折线图和柱状图: 【Python可视化系列】一文彻底教会你绘制美观的折线图(理论源码) 【Python可视化系列】一文教会你绘制美观的柱状图(理论源码) 对于一个连续性的变量&#xf…

中国社科院与新加坡新跃社科联合培养工商管理博士

全球经济正在经历由科技进步与创新、政治和人口的剧烈变化所带来的巨大不确定性与挑战。企业的领导者和管理者需要发展出战略性思维和全球洞察力以便面对越来越大的经济波动。中国社科院与新加坡新跃社科联合培养工商管理博士项目的训练能够让学生在一个企业和组织的改变和发展…

B039-SpringMVC基础

目录 SpringMVC简介复习servletSpringMVC入门导包配置前端控制器编写处理器实现Contoller接口普通类加注解(常用) 路径问题获取参数的方式过滤器简介自定义过滤器配置框架提供的过滤器 springMVC向页面传值的三种方式视图解析器springMVC的转发和重定向 SpringMVC简介 1.Sprin…

澳鹏干货解答!“关于机器学习的十大常见问题”

探索机器学习的常见问题,了解机器学习和人工智能的基本概念、原理、发展趋势、用途、方法和所需的数据要求从而发掘潜在的商机。 什么是机器学习? 机器学习即教授机器如何学习的过程,为机器提供指导,帮助它们自己开发逻辑&#…

SpringBoot-XXLJOB提供动态API调度任务

目录 一、项目版本 二、XXL-JOB提供动态API controller层 service层 三、SpringBoot项目 pom model XxlJobUtil-工具类 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&…

智能监测/检测系统/摄像头监控系统EasyCVR大华云台控制问题的解决方法

GB28181视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园…

Java研学-Tomcat服务器

一 Web资源 1 概述 浏览器网页上看到的所有内容都称为web资源,比如文字,图片,音频,视频,链接等等内容。 2 Web资源分类 分类概述使用的技术静态资源静态资源是相对于动态资源而言,是指没有后台数据库、不…

在.NET 应用程序中使用DSN-GBASE南大通用

在.NET 应用程序中使用GBASE南大通用 machine.config 文件中的资源时,首先需在工程中 引用 .NET Framework 的组件GBASE南大通用 System.configuration,然后使用 using 语句将GBASE南大通用System.configuration 命名空间中的类引入到工程中。 1) 在工…

LeetCode:162. 寻找峰值、1901. 寻找峰值 II(二分 C++)

目录 162. 寻找峰值 题目描述: 实现代码与解析: 二分 原理思路: 1901. 寻找峰值 II 题目描述: 实现代码与解析: 二分 原理思路: 162. 寻找峰值 题目描述: 峰值元素是指其值严格大于左…

内网穿透工具frp安装使用

摘要:之前使用的 nps 目前没有维护更新了,和在使用的过程中做内网穿透的的网速应该有限制,不论云服务器带宽是多少,下载速度都比较慢。这里切换到 frp 试试,对安装和使用简单记录,其和 nps 有很大的操作配置…

03-数据结构-栈与队列

1.栈 栈和队列是两种操作受限的线性表。如上图所示显示栈的结构 栈:先进后出,入栈(数据进入) 和出栈(数据出去)均在栈顶操作。 常见栈的应用场景包括括号问题的求解,表达式的转换和求值&#…

wvp gb28181 pro 统一编码规则

统一编码规则 D.1 编码规则 A 编码规则 A 由中心编码(8位)、行业编码(2位)、类型编码(3位)和序号(7位)四个码段共20位十 进制数字字符构成,即系统编码 中心编码 行业编码 类型编码 序号。   编码规则 A 的详细说明见表 D.1。其中,中心编码指用户或设备所归属的监控中心的…

Go语言字符串综合指南:函数、方法和最佳实践

Go语言字符串综合指南:函数、方法和最佳实践 引言Go语言字符串基础声明和初始化不可变性字符串长度 字符串操作函数常用字符串操作转换与解析示例连接分割包含关系替换大小写转换整数与字符串的转换字符串到整数的转换格式化与解析 字符串与字符切片字符串和字符切片…

create-react-app 打包去掉 map文件

前言: 在使用 create-react-app 创建的React应用中,默认情况下会生成带有.map文件的打包文件,这些.map文件包含了源代码和调试信息,用于开发和调试过程中进行错误跟踪。然而,在生产环境中,这些.map文件通常…

SQL学习笔记+MySQL+SQLyog工具教程

文章目录 1、前言2、SQL基本语言及其操作2.1、CREATE TABLE – 创建表2.2、DROP TABLE – 删除表2.3、INSERT – 插入数据2.4、SELECT – 查询数据2.5、SELECTDISTINCT – 去除重复值后查询数据2.6、SELECTWHERE – 条件过滤2.7、AND & OR – 运算符2.8、ORDER BY – 排序2…

SAP 采购订单暂存 EKKO-MEMORY 做标识

ME21N创建采购订单的时候可以点击 暂存 按钮保存订单 ME22N进去修改的时候会提示这个订单是暂存的 在表EKKO里字段 MEMORY 打上了标识则标识这个是暂存的 MEMORYTYPE 字段则记录了暂存的状态

理解pom.xml中的parent标签

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏&…

【TI毫米波雷达】上电时序、串口回环BUG及SOP模式不正常工作的解决方案(LP87524电源PMIC芯片的BUCK供电时序配置)

【TI毫米波雷达】雷达上电时序及SOP模式不正常工作的解决方案(LP87524电源PMIC芯片的BUCK供电时序配置) 文章目录 上电时序上电以后的雷达串口回环问题延迟上电时序LP87524电源PMIC芯片的BUCK供电时序LP87524电源PMIC芯片的BUCK默认供电输出附录&#x…