【C++随记4】C++二进制位操作运算符

ops/2024/10/21 7:32:39/

在C++中,二进制位操作运算符允许你直接对整数类型的变量的位进行操作。这些运算符包括:

按位与(Bitwise AND): &
按位或(Bitwise OR): |
按位异或(Bitwise XOR): ^
按位取反(Bitwise NOT): ~
左移(Left Shift): <<
右移(Right Shift): >>
下面是每个运算符的简单说明和示例:

按位与 (&)
描述:对于两个整数的对应位,如果都是1,则结果位是1;否则是0。
示例:

int a = 0b1010; // 二进制表示为 1010
int b = 0b1100; // 二进制表示为 1100
int c = a & b;  // 结果为 0b1000,即十进制的 8

按位或 (|)
描述:对于两个整数的对应位,如果至少有一个是1,则结果位是1;如果都是0,则结果位是0。
示例:

int a = 0b1010; // 二进制表示为 1010
int b = 0b1100; // 二进制表示为 1100
int c = a | b;  // 结果为 0b1110,即十进制的 14

按位异或 (^)
描述:对于两个整数的对应位,如果相同则结果位是0;如果不同则结果位是1。
示例:

int a = 0b1010; // 二进制表示为 1010
int b = 0b1100; // 二进制表示为 1100
int c = a ^ b;  // 结果为 0b0110,即十进制的 6

按位取反 (~)
描述:将整数的所有位取反,即1变为0,0变为1。
示例:

int a = 0b1010; // 二进制表示为 1010
int b = ~a;     // 结果为 0b0101,即十进制的 -11 (考虑到符号位扩展)

左移 (<<)
描述:将整数的所有位向左移动指定的位数,右边空出的位用0填充。
示例:

int a = 0b1010; // 二进制表示为 1010
int b = a << 2; // 结果为 0b101000,即十进制的 40

右移 (>>)
描述:将整数的所有位向右移动指定的位数。对于无符号数,左边空出的位用0填充;对于有符号数,根据实现的不同,可能用符号位填充(算术右移)或用0填充(逻辑右移)。
示例:

unsigned int a = 0b1010; // 二进制表示为 1010
unsigned int b = a >> 2; // 结果为 0b0010,即十进制的 2int c = 0b1010; // 二进制表示为 1010
int d = c >> 2; // 结果为 0b0010,即十进制的 2(假设使用逻辑右移)

请注意,在使用位操作时,通常需要确保操作的数是整数类型(如int, unsigned int, char, unsigned char等),因为浮点类型不支持位操作。此外,位操作符的优先级通常低于算术操作符,因此在复杂的表达式中可能需要使用括号来明确操作的顺序。


http://www.ppmy.cn/ops/37617.html

相关文章

docker 方式 elasticsearch 8.13 简单例子

安装 docker 虚拟机安装 elastic search 安装本地 # 创建 elastic 的网络 docker network create elastic # 用镜像的方式创建并启动容器 docker run -d --name es --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e "xpack.secur…

【零基础】system generator①设置卡解析

1.在matlab中我们输入的是双精度浮点型数据&#xff0c;经过gateway后变成定点型。十六位十四个小数位&#xff0c;整个数据有十六位&#xff0c;其中十四位给了小数 2.fixed-point定点型&#xff1b;signed有符号&#xff1b;2’s comp补码 3.量化误差 truncate&#xff0c;舍…

【BUUCTF】Crypto_RSA(铜锁/openssl使用系列)

【BUUCTF】Crypto_RSA&#xff08;铜锁/openssl使用系列&#xff09; 1、题目 在一次RSA密钥对生成中&#xff0c;假设p473398607161&#xff0c;q4511491&#xff0c;e17 求解出d作为flga提交 2、解析 RSA加密过程&#xff1a; 1&#xff09;选择素数&#xff1a;选择两个不…

24上软考5月新通知:今年可能是最简单的一次

备考24上软考的小伙伴注意啦&#xff01;软考新变动&#xff0c;今年软考高级科目通过率&#xff0c;可能会大增!!! 根据辽宁省软考办最新通知&#xff1a; 一、考试时间&#xff1a;5月25日-26日 解读&#xff1a;早前官方公告2024上半年软考考试时间为5月25日-28日&#xff…

八股Day1 集合

1.List Map Set的区别 2.说下集合继承关系 3.Iterator是什么&#xff1f;基本方法&#xff1f; 4.哪些集合线程不安全&#xff1f;怎么解决的&#xff1f; 5.ArrlyList和Vector的区别 6.ArrlyList和LinedList的区别 7.说下ArrayList的扩容机制 8.Set接口中 Comparator和Compara…

用HAL库改写江科大的stm32入门例子_9-1 串口发送

设置串口&#xff1a; 选项说明&#xff1a; 写一个串口发送函数&#xff1a; // serial send string function void serial_send_string(char *str) {HAL_UART_Transmit(&huart1, (uint8_t *)str, strlen(str), 1000); } main函数中调用发送信息&#xff1a; uint8_t dat…

ROS服务器通信

目录 一、角色 二、流程 注意 三、例子描述 四、srv文件 编译配置文件 vscode配置 五、Server.cpp编写例子 编写CMakeList 六、观察server的效果 七、Client编写例子 编写CMakeList 八、观察Client的结果 九、Client优化&#xff08;动态输入&#xff09; 了解argc…

技术分享 | i.MX8M Mini适配MIPI转eDP芯片

1.方案概述 此方案使用HD-8MMN-CORE的核心板搭配TI公司的芯片SN65DSI86转换芯片实现。 SN65DSI86作为一款MIPI DSI转eDP的芯片&#xff0c;支持双通道DSI输入&#xff0c;最大四通道显示输出&#xff0c;最大支持4K60fps输出&#xff0c;WUXGA 1080P。本方案中将采用单通道DS…