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

【总结型】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.xdnf.cn/news/17958.html

相关文章:

  • Hugging Face 与 NLP
  • Express开发快速学习
  • Spring Cloud系列—Alibaba Seata分布式事务
  • B站 韩顺平 笔记 (Day 20)
  • 创建maven module中的override
  • MySQL的《Buffer-pool》和《连接池》介绍
  • windows扩展(外接)显示器位置调节
  • CVE-2021-4300漏洞复现
  • 树的直径(树形DP)
  • 云计算-Kubernetes+Istio 实现金丝雀发布:流量管理、熔断、流量镜像、ingreess、污点及pv案例实战
  • 新手向:Python异常处理(try-except-finally)详解
  • LangChain4j:基于 SSE 与 Flux 的 AI 流式对话实现方案
  • Apereo CAS靶场渗透练习
  • Windows常见文件夹cache的作用还有其他缓存类型文件夹的作用
  • pytest介绍(python测试框架)(@pytest.mark.parametrize、@pytest.fixtures)
  • functools:管理函数的工具
  • Autosar Os新手入门
  • Nginx蜘蛛请求智能分流:精准识别爬虫并转发SEO渲染服务
  • 3 种方式玩转网络继电器!W55MH32 实现网页 + 阿里云 + 本地控制互通
  • cuda编程笔记(15)--使用 CUB 和 atomicAdd 实现 histogram
  • Console.ReadLine()用法功能
  • 进程替换:从 “改头换面” 到程序加载的底层逻辑
  • PowerShell来关闭 Windows 安全中心
  • CUDA 编程笔记:CUDA内存模型概述
  • Nginx域名和IP兼容双方的API地址
  • Neural Network Layer|神经网络的层
  • Latex使用了期刊templates但是字体样式不对
  • Vue 3.5+ Teleport defer 属性详解:解决组件渲染顺序问题的终极方案
  • 数字化与人工智能的崛起及其社会影响研究报告
  • CentOS 7 一键部署 上Maria Database(MariaDB)10.3.38 安装手册(避开 Oracle 19c 路径)