c语言用位运算将一个数清零,C语言学习笔记_位运算
C语言学习笔记_位运算
知识点记录
基本位运算
按位与:全1为1,见0为0;与1相与无变化,与0相与变为0;可用于特定位清零
按位或:见1为1,全0为0;与1相或变为1,与0相或无变化;可用于特定位置1
异或:相同为0,不同为1;与1异或会取反,与0异或无变化;可用于特定位取反
移位运算
无符号数:左移右侧补0,右移左侧补0
有符号数:左移右侧补0,右移左侧补符号位
构造特定二进制数
unsigned int a, b;
a = (0x1<<3);//构造二进制数0000 …… 0000 1000
b = (0x1<<3) | (0x1<<6);//构造二进制数0000 …… 0100 1000
unsigned int c,d;
c = ~(0x1<<3);//构造二进制数1111 …… 1111 0111
d = ~((0x1<<3) | (0x1)<<6);//构造二进制数1111 …… 1011 0111
测试
给定一个整形数a,设置a的bit3~bit7,保持其他位不变。
a |= 0x1F<<3;
给定一个整形数a,清除a的bit15~bit23,保持其他位不变。
a &= ~(0x1FF<<15);
给定一个整形数a,取出a的bit3~bit8。
a = (a>>3) & 0x3F;
给一个寄存器的bit7~bit17中的值加17
unsigned int b;//定义临时变量
b = (a>>7) & 0x7FF;//获取bit7~bit17中的值
b += 17;//对原来的值增加17
a &= ~(0x7FF<<7);//对应位清零
a |= b<<7 ;//对应位赋值
给一个寄存器的bit7-bit17赋值937,同时给bit21-bit25赋值17。
a &= ~((0x7FF<<7) | (0x1F<<21));//对应位清零
a |= (937<<7) | (17<<21);//对应位赋值
用宏定义将32位数x的第n位置位
#define SET_BIT_N(x, n)(x | (1U<
用宏定义将32位数x的第n位清零
#define CLEAR_BIT_N(x, n)(x & ~(1U<
用宏定义将32位数x的第n位到第m位置位
#define GET_ALLONE_BITS(n, m)(~(~(0U)<
#define SET_BIT_N_M(x, n, m)(x | GET_ALLONE_BITS(n, m)<
截取变量x的第n到第m位
#define GET_BIT(x, n, m)(x>>(n-1) & GET_ALLONE_BITS(n , m))
c语言用位运算将一个数清零,C语言学习笔记_位运算相关推荐
- C++学习笔记-----用位运算实现加减乘除
C++学习笔记-----用位运算实现加减乘除 原文:http://blog.csdn.net/sinat_35261315/article/details/72904945 数据在计算机内存中是以二进 ...
- 基础才是王道——TCP/IP详解学习笔记 这位仁兄写得太好了
TCP/IP详解学习笔记 这位仁兄写得太好了 TCP/IP详解学习笔记 这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.as ...
- Apollo学习笔记3-定位模块配置
Apollo学习笔记3-定位模块配置 环境介绍 导航设备参数配置 导航设备配置 (1)杆臂配置 (2)GNSS 航向配置 (3)导航模式配置 (4) USB 接口输出设置 (5)网口配置 (6) PP ...
- Polyworks脚本开发学习笔记(六)-比较运算、数学运算、逻辑运算及流程控制
Polyworks脚本开发学习笔记(六)-比较运算.数学运算.逻辑运算及流程控制 前言 比较运算.逻辑运算及流程控制是编程的基本语法,Polyworks的语法规则与VB/C#/Python等并没有很大 ...
- ZeroMemory memset 等清零的用法(笔记)
ZeroMemory memset 等清零的用法(笔记) (1)函数的原型和参数的介绍 ZeroMemory函数 void ZeroMemory( PVOID Destination,SIZE_T L ...
- 学习笔记_关于switch在whlie中无限循环的解决办法_C语言
学习笔记_关于switch在whlie中无限循环的解决办法_C语言 今天在做作业的时候突然发现一个问题 #include<stdio.h> int main() {int a;while( ...
- 算法学习笔记(5)-------位运算的tips
为什么80%的码农都做不了架构师?>>> 在计算机中所有数据都是以二进制的形式储存的.位运算其实就是直接对在内存中的二进制数据进行操作,因此处理数据的速度非常快. 在实际编程中 ...
- C语言学习笔记06-占位符格式、C基本类型及逃逸字符一些细节(附介绍BCD码)
主要整理有关占位符格式与逃逸字符的一些细节 朋友们,看栗子--"BCD解码" (文末附BCD码介绍) 一个BCD数的十六进制是0x12(对应二进制表示:0001 0010),它表达 ...
- 异步清零和同步置数/清零的区别
同步,异步是对于时钟而言的. 同步指的是,状态的变化需要等待时钟有效沿来触发,所有动作同时跟随这个时钟变化,而异步时,状态变化不依赖与时钟. 异步清零说的是,你需要对一个计数器在满足某种条件时想要他归 ...
最新文章
- 【Java面试题】docker拉取镜像
- STM32 FSMC学习笔记+补充(LCD的FSMC配置)
- 使用IsLine FrameWork开发ASP.NET程序之六—使用ExceptionProcessProvider异常处理框架(下)...
- java.lang.reflect.Constructor
- Android动态改变TextView字体颜色
- 全国Python科研应用专题实操培训班
- javaweb基础 - Servlet
- Unity3d--第三人称摄像机常用控制
- 计算机硬件 中级证,计算机硬件组装与教学方法计算机应用中级职称论文
- labview的RS232驱动程序
- Linux设置终端快捷键
- 怎么修改html上的文字大小,网页字体大小怎么改_电脑网页字体怎么调整-win7之家...
- Python暴力破解受密码保护的zip/rar文件
- 电子信息工程考研方向计算机,电子信息工程考研方向
- 4月6日——4月10日课程表
- 新的一年:运动强身,读书明智,思考修心
- 《基于短时分数阶傅里叶变换的时频分析方法》
- Neo4j 4.x 社区版数据导入及Spring-Data-Neo4j 5.x、6.x使用案例
- AI元宇宙数字人直播带货软件 全天24小时直播带货系统 含搭建教程
- vue2源码解读笔记(一)
热门文章
- python读写磁盘扇区数据有什么用_18-55.在Windows中,能够自动修复文件系统错误、扫描并尝试恢复坏扇区的操作是( )_学小易找答案...
- 浅谈“全栈工程师需要掌握哪些技能”
- 微信小程序如何申请开通流量主
- stm32RCT6 使用NTC热敏电阻实现温度报警器
- 如何阻止事件冒泡与默认事件?
- weblogic10 下载
- 关于Java反射获取静态属性值的方式
- 开发板ping不通虚拟机
- 关于memset(G,0x3f,sizeof(G))的说明
- git 码云 简要使用