位操作符详解(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,这样就可以轻松实现正数和负数的转换了。

尾声

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

家里就一台电脑还抢着用,限定电脑投屏解决了问题。

很多人都遇到过家里电子设备争抢的情况吧。上周我就因为临时任务,需要用电脑处理一些文件,搜索、浏览资料,制作对应PPT,无论哪项都需要用电脑。恰巧,家里小孩有个观看《大国崛起》纪录片的学习任务,带完整字…

C++继承与派生——(1)继承的层次关系

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 再好的种子,不播种下去&am…

摄像头画面作为电脑桌面背景

1. 创建文件main.pyw,文件内容 import base64 import io import os import threading import tkinter as tkimport cv2 import pystray import win32api import win32con import win32gui from PIL import Image, ImageTk from pystray import MenuItem, Menuclass…

Kubernetes 架构原则和对象设计

什么是 Kubernetes Kubernetes 是谷歌开源的容器集群管理系统 • 基于容器的应用部署、维护和滚动升级; • 负载均衡和服务发现; • 跨机器和跨地区的集群调度; • 自动伸缩; • 无状态服务和有状态服务; • 插件机制…

多表插入操作——后端

场景:当添加一个菜品时,还需要记录菜品的口味信息,因此需要对菜品表(dish)和口味表(dish_flavor)同时进行插入操作。 两个表的字段: 代码思路:由DishController将前端的…

多个文件保存路径不同,如何批量改为相同的文件名称并添加编号

大伙在日常工作中有没有遇到需要修改文件名称吗?平时遇到修改文件名称是如何操作呢,是按比较重统的方法操作,点右键重命名,这个方法是可以使用,如果量少情况可以使用这个方法操作,如果量大,文件…

防火墙-iptables详解

前言:最近的工作中,需要对防火墙进行配置,但是很多地方都是老机器,有的用iptables,有的用firewalld,我写下这篇文章,彻底地了解这两个应用软件的使用方法。在以后的工作中,相信很多人…

程序员必知!开放封闭原则的实战应用与案例分析

开放封闭原则是面向对象设计中的重要原则之一,它要求软件实体(类、模块、函数等)应该对扩展开放,但对修改关闭。这意味着当需要添加新功能时,不应该修改现有的代码,而是应该通过扩展来实现。这可以通过使用…

Linux上随机输出谚语的程序fortune

概要: Linux上有一个随机输出谚语的程序叫fortune 手册对它的描述是:输出一个随机的、充满希望的、有趣的谚语 本篇所用的系统是Ubuntu22.04 一、fortune的安装 sudo apt install fortune-mod 二、fortune的使用 1、示例一 这个谚语是什么意思啊…

机器学习与深度学习傻傻分不清?快来!

导读:本文探讨机器学习和深度学习之间的关键区别和相互联系,目的是为大家提供一个清晰的框架,帮助大家理解这两种技术的特点、应用场景以及选择适当方法的依据。(理论辨析,无实践代码,放心食用)…

CEC2013(python):五种算法(GA、WOA、GWO、DBO、HHO)求解CEC2013(python代码)

一、五种算法简介 1、遗传算法算法GA 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、蜣螂优化算法DBO 5、哈里斯鹰优化算法HHO 二、5种算法求解CEC2013 (1)CEC2013简介 参考文献: [1] Liang J J , Qu B Y , Suganthan P N , et al. Prob…

STM32内部是怎么工作的

STM32是怎么工作的 1 从孩子他妈说起2 早期计算机的组成2.1 五大元件(1)第一个出场的是电容元件(2)第二个出场的是二极管(3)第三个出场的是电阻元件(4)第四个出场的是电感&#xff0…

【论文简述】Learning Depth Estimation for Transparent and Mirror Surfaces(ICCV 2023)

一、论文简述 1. 第一作者:Alex Costanzino 2. 发表年份:2023 3. 发表期刊:ICCV 4. 关键词:深度感知、立体匹配、深度学习、分割、透明物体、镜子 5. 探索动机:透明或镜面(ToM)制成的材料,从建筑物的玻…

RabbitMQ入门指南(三):Java入门示例

专栏导航 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、AMQP协议 1.AMQP 2.Spring AMQP 二、使用Spring AMQP实现对RabbitMQ的消息收发 1.案例准备阶段 2.入门案例(无交换机) 3.任务模型案例(Work Queues&#xff0…

文献速递:生成对抗网络医学影像中的应用——用于生成前列腺MR-only影像治疗剂量规划的合成CT的深度学习模型:多中心研究

文献速递:生成对抗网络医学影像中的应用——用于生成前列腺MR-only影像治疗剂量规划的合成CT的深度学习模型:多中心研究 本周给大家分享文献的主题是生成对抗网络(Generative adversarial networks, GANs)在医学影像中的应用。文…

Chatgpt如何多人使用?如何防止封号?

时下火爆年轻人的AI技术当属于Chatgpt,但他是一把双刃剑,使用它给我们带来便利的同时,也可能会带来隐患,因此我们需要科学使用AI技术。 本文将针对备受关注的Chatgpt如何多人共享使用?如何防止封号,为你带…

python堆-完全二叉树--完全解读

作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。…

PHP 读取excel输入为HTML

目录 介绍 安装扩展 读取excel文件 输入为html 保存到文件 总结 介绍 以前都是使用phpexcel,不过已经不再更新了, 不过不用担心还可以使用phpspreadsheet来替代它进行操作。 PHPSpreadsheet-在PHP中读取、创建和编写电子表格文档-电子表格引擎。…

SpringBoot代码混淆与反混淆加密工具详解

目录 反编译 混淆 正文 一共就两步,无需源码,直接对ipa文件进行混淆加密 打开要处理的IPA文件 设置签名使用的证书和描述文件 开始ios ipa重签名 简单就是把代码跑一哈,然后我们的代码 .java文件 就被编译成了 .class 文件 反编译 就是…

高精度地图定位模块技术规范

目 录 1 概述................................................................................................... 5 1.1 适用范围...................................................................................... 5 1.2 规范性引用文件....................…