当前位置: 首页 > 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.lryc.cn/news/623377.html

相关文章:

  • Java -- 泛型-自定义泛型
  • 在职老D渗透日记day18:sqli-labs靶场通关(第26关)get报错注入 过滤or和and基础上又过滤了空格和注释符 ‘闭合 手动注入
  • Qt 动态属性(Dynamic Property)详解
  • 牛 CDR3 单抗:抗病毒领域的 “纳米级精准导弹”
  • 系统思考—啤酒游戏经营决策沙盘认证
  • 第二十五天:构造函数/析构函数/拷贝构造
  • SpringBoot 整合 Langchain4j:系统提示词与用户提示词实战详解
  • 小白学习《PCI Express体系结构导读》——第Ⅰ篇第1章PCI总线的基本知识
  • 《A Practical Guide to Building Agents》文档学习
  • Nginx蜘蛛请求智能分流:精准识别爬虫并转发SEO渲染服务
  • 23. CommonJS 和 ES6 Module 区别
  • 第6问 数据分析领域主要的岗位有哪些?
  • autofit.js: 自动调整HTML元素大小的JavaScript库
  • Java设计模式详细解读
  • 安卓四大组件基础题
  • AI搜索:大模型商业落地的“第一束光”,照见了什么?
  • 【数据结构】深入理解单链表与通讯录项目实现
  • aws(学习笔记第五十一课) ECS集中练习(3)
  • MySQL锁机制:悲观锁VS乐观锁详解
  • 初识c语言————宏定义和调用
  • C语言零基础第18讲:自定义类型—结构体
  • 新手向:GitCode疑难问题诊疗
  • C语言:文件操作详解
  • 从 MySQL 5.7 迁移到 8.0:别让 SQL 文件 “坑” 了你
  • 双指针和codetop复习
  • 【LeetCode每日一题】
  • JavaWeb开发_Day14
  • 嵌入式 Linux LED 驱动开发实验
  • Proteus 入门教程
  • KingbaseES主备读写分离集群安装教程