当前位置: 首页 > news >正文

C++中的运算符总结(5):按位运算符(上)

C++中的运算符总结(5):按位运算符(上)

9、按位运算符 NOT( ~)、 AND( &)、 OR( |)和 XOR( ^)

逻辑运算符和按位运算符之前的差别在于,按位运算符返回的并非布尔值,而是对操作数对应位执行指定运算的结果。 C++让您能够执行按位 NOT、 OR、 AND 和 XOR(异或)运算,它们分别使用 ~ 将每位取反、使用 | 对相应位执行 OR 运算、使用 & 对相应位执行 AND 运算、使用^对相应位执行 XOR 运算。其中后三个运算符对变量与选择的数字(通常是位掩码)执行相应的运算。
在整数的每位都表示特定标记的状态时,有些按位运算很有用。例如, 32 位的整数可用于表示 32 个布尔标记。以下程序演示了按位运算符的用法:

#include <iostream>
#include <bitset>
using namespace std;int main()
{cout << "Enter a number (0 - 255): ";unsigned short inputNum = 0;cin >> inputNum;bitset<8> inputBits (inputNum); cout << inputNum << " in binary is " << inputBits << endl;bitset<8> bitwiseNOT = (~inputNum);cout << "Logical NOT ~" << endl;cout << "~" << inputBits  << " = " << bitwiseNOT << endl;cout << "Logical AND, & with 00001111" << endl;bitset<8> bitwiseAND = (0x0F & inputNum);// 0x0F is hex for 0001111cout << "0001111 & " << inputBits  << " = " << bitwiseAND << endl;cout << "Logical OR, | with 00001111" << endl;bitset<8> bitwiseOR = (0x0F | inputNum);cout << "00001111 | " << inputBits  << " = " << bitwiseOR << endl;cout << "Logical XOR, ^ with 00001111" << endl;bitset<8> bitwiseXOR = (0x0F ^ inputNum);cout << "00001111 ^ " << inputBits  << " = " << bitwiseXOR << endl;return 0;
}

输出:

Enter a number (0 - 255): 181
181 in binary is 10110101
Logical NOT ~
~10110101 = 01001010
Logical AND, & with 00001111
0001111 & 10110101 = 00000101
Logical OR, | with 00001111
00001111 | 10110101 = 10111111
Logical XOR, ^ with 00001111
00001111 ^ 10110101 = 10111010

这个程序使用了一种还未介绍过的数据类型—bitset,旨在简化二进制数据的显示。这里使用 std::bitset 完全是为了方便显示,而没有其他任何目的。第 10、13、18 和 22 行将一个整数赋给了一个 bitset 对象,以便使用它来显示该整数的二进制表示。运算是对整数执行的。首先,请关注输出,它显示了用户输入的整数 181 的二进制表示,然后依次显示了将按位运算符 ~、 &、 | 和 ^ 用于该整数的结果。第 14 行使用按位运算 NOT 对各位取反。这个程序还演示了运算符 &、| 和 ^ 的工作原理,它们对两个操作数的相应位执行相应运算,从而获得最终的结果。只要结合使用这里的结果与前面介绍的真值表,您就能明白其中的工作原理。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容
点击立即学习:C/C++后台高级服务器课程

相关文章:

C++中的运算符总结(5):按位运算符(上)

C中的运算符总结&#xff08;5&#xff09;&#xff1a;按位运算符&#xff08;上&#xff09; 9、按位运算符 NOT&#xff08; &#xff5e;&#xff09;、 AND&#xff08; &&#xff09;、 OR&#xff08; |&#xff09;和 XOR&#xff08; ^&#xff09; 逻辑运算符和…...

8.Oracle中多表连接查询方式

表连接分类&#xff1a; 内连接、外连接、交叉连接、自连接 1 内连接 内连接是一种常见的多表关联查询方式&#xff0c;一般使用关键字INNER JOIN来实现。其中&#xff0c;INNER关键字可以省略&#xff0c;当只使用JOIN关键字时&#xff0c;语句只表示内连接操作。在使用内连…...

Linux 安装mysql(ARM架构)

添加mysql用户组和mysql用户 安装依赖libaio yum install -y libaio* 下载Mysql wget https://obs.cn-north-4.myhuaweicloud.com/obs-mirror-ftp4/database/mysql-5.7.27-aarch64.tar.gz安装mysql 解压Mysql tar xvf mysql-5.7.27-aarch64.tar.gz -C /usr/local/ 重命名 …...

git:git clone报错提示permissions xxxx for xxxxxx are too open

问题&#xff1a; 如题 参考&#xff1a; [密钥权限过大错误]ssh “permissions are too open” error 解决办法&#xff1a; 将id_rsa和id_rsa.pub的权限改为600...

elasticSearch数据的导入和导出

http://wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.gz 解压即可&#xff1a; 1、将索引中的数据导出到本地 myindex 是我的索引 elasticdump --inputhttp://localhost:9200/myindex--output/home/date/myindex.json2、将本地数据导入es中 elasticdum…...

DDR PHY

1.ddr phy架构 1.pub&#xff08;phy unility block&#xff09; 支持特性&#xff1a; &#xff08;1&#xff09;不支持SDRAM的DLL off mode &#xff08;2&#xff09;数据位宽是以8bit逐渐递增的&#xff08;这样做的目的是因为可能支持16/32/64bit的总线位宽&#xff…...

XSS攻击是怎么回事?记录一下

title: XSS攻击 date: 2023-08-27 19:15:57 tags: [XSS, 网络安全] categories: 网络安全 今天学习了一个网络攻击的手段&#xff0c;XSS攻击技术&#xff0c;大家自建网站的朋友&#xff0c;记得看看是否有此漏洞。 &#x1f388; XSS 攻击 全称跨站脚本攻击 Cross Site Sc…...

FFmpeg支持多线程编码并保存mp4文件示例

之前介绍的示例&#xff1a; (1).https://blog.csdn.net/fengbingchun/article/details/132129988 中对编码后数据保存成mp4 (2).https://blog.csdn.net/fengbingchun/article/details/132128885 中通过AVIOContext实现从内存读取数据 (3).https://blog.csdn.net/fengbingchun/…...

一文搞懂深度信念网络!DBN概念介绍与Pytorch实战

目录 一、概述1.1 深度信念网络的概述1.2 深度信念网络与其他深度学习模型的比较结构层次学习方式训练和优化应用领域 1.3 应用领域图像识别与处理自然语言处理推荐系统语音识别无监督学习与异常检测药物发现与生物信息学 二、结构2.1 受限玻尔兹曼机&#xff08;RBM&#xff0…...

MyBatis:使用注解让数据库操作更简单

目录 一、简介 二、配置 三、基于注解的基本使用 四、测试 总结 一、简介 在Java开发中&#xff0c;数据库操作是一个常见而重要的任务。为了方便地执行SQL语句&#xff0c;获取结果集&#xff0c;处理异常等&#xff0c;我们通常需要使用JDBC&#xff08;Java Database …...

基于PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB&#xff0c;遥感大数据时…...

4.网络设计与redis、memcached、nginx组件(一)

网络组件系列文章目录 第四章 网络设计与redis、memcached、nginx组件 文章目录 网络组件系列文章目录文章的思维导图前言一、网络相关的问题&#xff0c;网络开发中要处理那些问题&#xff1f;网络操作IO连接建立连接断开消息到达消息发送网络操作IO特性 二、网络中IO检测IO函…...

leetcode分类刷题:矩阵顺时针模拟

1、这种题目是对代码熟练度考察&#xff0c;模拟顺时针建立或访问矩阵&#xff0c;需要注意矩阵是否为方阵 2、具体思路&#xff1a;以圈数为循环条件&#xff0c;每一圈都坚持左闭右开的区间规则&#xff1b;当小的行列值为奇数&#xff0c;最后一圈为一行或一列或一个数字的不…...

Java8新特性整理记录

1、list实体集合根据某个属性分组后求和 方法一&#xff1a; list.stream().collect(Collectors.groupingBy(e -> e.getId())).values().stream().map(d -> {DemoEntity sampleData d.get(0);sampleData.setPremium(d.stream().map(s -> new BigDecimal(s.getPrem…...

43.227.196.1 RAID技术有什么意义?

RAID&#xff08;Redundant Array of Inexpensive Disks&#xff09;技术是一种数据存储技术&#xff0c;它通过将多个硬盘组合在一起&#xff0c;来提高数据存储的性能、可靠性和容错性。 RAID技术的主要意义包括&#xff1a; 提高数据读写性能&#xff1a;RAID技术可以将多…...

c++ qt--信号与槽(一) (第三部分)

c qt–信号与槽(一) &#xff08;第三部分&#xff09; 一.用qt自带的方法添加信号槽 1.第一种 1.如何添加 2.在何处进行绑定 2.第二种 1.如何添加 2.在何处进行绑定 而且会在mainwindow.h中添加槽函数的声明&#xff0c;在mainwindow.cpp中添加槽函数的定义 在mainwindow…...

LLM学习《Prompt Engineering for Developer》

Prompt 如何构造好的Prompt 分割符&#xff1a;分隔符就像是 Prompt 中的墙&#xff0c;将不同的指令、上下文、输入隔开&#xff0c;避免意外的混淆。你可以选择用 &#xff0c;“”"&#xff0c;< >&#xff0c; &#xff0c;: 等做分隔符&#xff0c;只要能明确…...

nginx-获取客户端IP地址

上有服务器与客户端中间是有nginx代理服务器的&#xff0c;上游服务器如何获取客户端真实ip地址&#xff1f; nginx代理服务器设置X-Forwarded-For的header参数&#xff0c;代理服务器通过remote_addr获取客户端ip地址&#xff0c;将ip地址写入nginx代理服务器的X-Forwarded-Fo…...

Redis 高可用之集群搭建和数据分片

Redis 高可用之集群搭建和数据分片 一、简介1. Redis 集群&#xff1a;2. 集群搭建&#xff1a; 二、Redis 集群搭建1. 单机 Redis 升级为 Redis Clustera. 搭建方法b. 搭建方式说明 2. 环境准备3. 配置修改4. 启动集群 三、Redis数据分片的实现Redis数据分片概念说明数据分片的…...

兄弟,王者荣耀的段位排行榜是通过Redis实现的?

目录 一、排行榜设计方案1、数据库直接排序2、王者荣耀好友排行 二、Redis实现计数器1、什么是计数器功能&#xff1f;2、Redis实现计数器的原理&#xff08;1&#xff09;使用INCR命令实现计数器&#xff08;2&#xff09;使用INCRBY命令实现计数器 三、通过Redis实现“王者荣…...

nli-distilroberta-base实际项目:高校招生简章关键条款与考生疑问逻辑关系库构建

nli-distilroberta-base实际项目&#xff1a;高校招生简章关键条款与考生疑问逻辑关系库构建 1. 项目背景与需求 高校招生简章通常包含大量专业条款和政策说明&#xff0c;每年都会收到大量考生关于条款理解的咨询。传统的人工解答方式存在几个痛点&#xff1a; 效率低下&am…...

Python无GIL时代来了?揭秘CPython 3.13+无锁并发模型的8个高频面试陷阱

第一章&#xff1a;Python无GIL时代的技术演进与核心变革Python长期以来受全局解释器锁&#xff08;GIL&#xff09;制约&#xff0c;在多核CPU场景下难以实现真正的并行计算。随着CPython 3.13正式引入实验性“自由线程模式”&#xff08;Free-threading Mode&#xff09;&…...

LFM2.5-1.2B-Thinking-GGUF代码生成能力评测:对比Claude Code的轻量化替代方案

LFM2.5-1.2B-Thinking-GGUF代码生成能力评测&#xff1a;对比Claude Code的轻量化替代方案 1. 评测背景与模型特点 在当今AI辅助编程领域&#xff0c;大型语言模型已经成为开发者日常工作的得力助手。然而&#xff0c;许多高性能模型往往需要云端部署或强大的计算资源&#x…...

微信支付商家券:从创建到核销的全链路开发实战

1. 微信支付商家券的核心价值与应用场景 商家券是微信支付为商户提供的数字化营销工具&#xff0c;本质上是一种电子优惠凭证。与传统的纸质优惠券相比&#xff0c;商家券最大的优势在于能够实现全链路数字化管理。我在帮一家连锁咖啡品牌接入商家券时发现&#xff0c;他们的线…...

解决Docker容器中英伟达GPU驱动报错:nvidia-container-toolkit安装指南

1. 为什么Docker容器无法识别英伟达GPU&#xff1f; 最近在帮朋友调试一个深度学习项目时&#xff0c;遇到了一个典型问题&#xff1a;当尝试在Docker容器中运行需要GPU加速的应用时&#xff0c;系统报错提示无法找到NVIDIA驱动。错误信息是这样的&#xff1a; Error response …...

基于Matlab的转子系统临界转速与主振型求解:传递矩阵法及其参数涉及等截面、材料与轮盘参数的...

140.基于matlab的求解转子系统前三个临界转速和主振型的传递矩阵法转子系统的不平衡响应 参数涉及等截面参数、材料参数、轮盘参数 程序已调通&#xff0c;可直接运行传递矩阵法这玩意儿在转子动力学里属于实操性极强的工具&#xff0c;今天咱们就拿Matlab直接开搞转子系统的前…...

Guohua Diffusion 数据库集成方案:MySQL管理生成任务与作品元数据

Guohua Diffusion 数据库集成方案&#xff1a;MySQL管理生成任务与作品元数据 如果你用过Guohua Diffusion这类图像生成工具&#xff0c;可能会遇到一个头疼的问题&#xff1a;生成的图片越来越多&#xff0c;管理起来越来越乱。今天想找上周生成的那张“赛博朋克风格的城市夜…...

Phi-4-Reasoning-Vision智能助手:医疗影像图文问答系统构建实践

Phi-4-Reasoning-Vision智能助手&#xff1a;医疗影像图文问答系统构建实践 1. 项目概述 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具&#xff0c;专为医疗影像分析场景优化。该系统能够理解医学影像内容并回答专业问题…...

告别复杂配置!5分钟掌握OCAT:OpenCore图形化配置神器

告别复杂配置&#xff01;5分钟掌握OCAT&#xff1a;OpenCore图形化配置神器 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore&#xff08;OCAT&#xff09; 项目地址: https://gitcode.com/gh_mirrors/oc/OCAuxiliaryTools 如果你…...

如何在Windows上零配置运行Android应用?APK Installer的革命性方案

如何在Windows上零配置运行Android应用&#xff1f;APK Installer的革命性方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经遇到过这样的场景&#xff1a…...