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

【总结型】c语言中的位运算

位运算包括

&
|
^
~
<<
>>

按位与

将某些变量中的某些位清0同时保持其他位不变。也可以用来获取变量中的某一位。
例如:将int型变量n低8位全置为0,其余位保持不变。
n = n & 0xffffff00
如何判断一个int型变量n的第七位。
n & 0x80 的值是否等于0x80

按位或

按位或运算通常用来将某变量中的某些位置置1且保留其他位不变。
例如,如果需要将int型变量n的低8位全置为1,而其他位保持不变
n = n | 0xff

按位异或

按位异或运算通常用来将某些变量中的某些位取反,且保留其他位不变。
例如,如果需要将int型变量n的低8位取反,而其余位不变,则可以执行
n ^= 0xff
异或运算特点:如果a ^ b = c, 那么就有 c ^ b = a 以及 c ^ a = b
另外异或还能实现不通过临时变量,就能交换两个变量的值
int a = 5, b = 7
a= a^b
b= b^a
a= a^b
可以实现a,b值交换

按位非

0变1,1变0

左移运算符<<

左移时,高位丢弃,低位补0,a的值不因运算而改变。左移n位,等于乘以2^n。

右移运算符>>

右移时,移出最右边的位就被丢弃。a的值不因运算而改变。对于有符号数,如long,int,short,char类型变量,在右移时,符号位将一起移动,并且大多数c/c++编译器规定,如果原符号位为1,则右移时高位就补充1,原符号位为0,则右移时高位就补0。右移n位,就相当于左操作数除以2^n,并且结果往小里取整。

思考

有两个int型变量a和n(0 <= n <= 31),要求写一个表达式,使该表达式的值和a的第n位相同。
(a>>n) & 1
或者(a & (1<<n))>>n ,条件是 (0 <= n < 31)

http://www.dtcms.com/a/334029.html

相关文章:

  • 给AI装上“稳压器”:批归一化如何加速深度学习
  • [Linux] Cockpit管理服务器 软件包管理
  • VScode 使用遇到的问题
  • linux docker neo4j 导出 (windows 导入)
  • Winsows系统去除右键文件显示的快捷列表
  • 微服务架构实战指南:从单体应用到云原生的蜕变之路
  • 头文件包含和前置声明
  • python---包
  • libcurl 中 curl_multi 的演进:从双路并进到 epoll 革命
  • 8.16打卡 DAY43 复习日
  • 0301-solidity进阶-区块链-web3
  • 布隆过滤器的原理及使用
  • Kotlin-基础语法练习一
  • Maven私服配置模版
  • Qt 关于QString和std::string数据截断的问题- 遇到\0或者0x00如何处理?
  • 小白学投资理财 第一天
  • 算力与显存、显存带宽的关系
  • 【php反序列化介绍与常见触发方法】
  • Houdini Vop学习笔记
  • 测试工程师的AI转型指南:从工具使用到测试策略重构
  • TDengine IDMP 高级功能(4. 元素引用)
  • OpenAI TTS API + Web 前端 AudioContext 实战方案
  • 【Web后端】Django、flask及其场景——以构建系统原型为例
  • 《深度解构:构建浏览器端Redis控制台的WebSocket协议核心技术》
  • Protues使用说明及Protues与Keil联合仿真实现点亮小灯和流水灯
  • 【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
  • C#WPF实战出真汁08--【消费开单】--餐桌面板展示
  • C语言基础:(十五)深入理解指针(5)
  • 数据清洗:数据处理的基石
  • 【C++】异常详解(万字解读)