C语言用位运算构建特定的二进制数
用位运算构建特定的二进制数
- 寄存器操作需要给特定位给特定值
- 使用移位获取特定位为1的二进制数
- 结合位取反获取特定位为0的二进制数
寄存器操作需要给特定位给特定值
(1)对寄存器特定位进行置1或者清0或者取反,关键性的难点在于要事先构建一个特别的数,这个数和原来的值进行位与、位或、位异或等操作,即可达到我们对寄存器操作的要求。
(2)自己写代码用位操作符号(主要是移位和位取反)来构建这个特定的二进制数。
使用移位获取特定位为1的二进制数
(1)最简单的就是用移位来获取一个特定位为1的二进制数。譬如我们需要一个bit3~bit7为1(隐含意思就是其他位全部为0)的二进制数,可以这样:
0001 1111(0x1f<<3)。
(2)更难一点的要求:获取bit3~bit7为1,同时bit23~bit25为1,其余为0:
((0x1f<<3) | (7<<23))。
结合位取反获取特定位为0的二进制数
(1)这种特定位(比较少)为0而其余位(大部分)为1的数,不适合用很多个连续1左移的方式来构造,适合左移加位取反的方式来构造。
(2)思路是:先试图构造出这个数的位相反数,再取反得到这个数。(譬如本例中要构造的数bit4~bit10为0其余位为1,那我们就先构造一个bit4~bit10为1,其余位为0的数,然后对这个数按位取反即可)
C语言用位运算构建特定的二进制数相关推荐
- 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一2.4 位运算构建特定二进制数...
本节书摘来自异步社区<嵌入式Linux与物联网软件开发--C语言内核深度解析>一书中的第2章,第2.4节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区"异步社区" ...
- C语言单片机位运算——看完马上懂(个人总结)
位运算: 0XF => 1111 0XF0 => 1111 0000 0X0F0F=0XF0F => 1111 0000 1111 &(与): C语言 ...
- c语言程序设计施莹答案,C语言课件-位运算.ppt
C语言课件-位运算.ppt C语言程序设计,信息工程学院 施莹 2019年11月,第12章 位运算,C语言是为描述系统而设计的,其功能应当具有汇编的功能 故C语言具有高级语言的的功能,也肯定低级语言的 ...
- c语言 枚举,位运算
c语言 枚举,位运算 枚举 枚举类型的定义和枚举变量的说明 一.枚举的定义枚举类型定义的一般形式为 二.枚举变量的说明 枚举类型变量的赋值和使用 位运算 位域 一.位域的定义和位域变量的说明 二.位域 ...
- 单片机c语言位运算写法,单片机与嵌入式系统中C语言的位运算小记
原标题:单片机与嵌入式系统中C语言的位运算小记 编了个PIC的项目,对里的还是蛮有感悟的,特此记录一下. 譬如说,在程序中定义了一个char类型的变量, purge_short_enable_flag ...
- 谭浩强c语言不讲位运算呢,谭浩强C语言_CHAR12位运算.DOC
您所在位置:网站首页 > 海量文档  > 计算机 > C/C++资料 谭浩强C语言_CHAR12位运算.DOC11页 ...
- C语言基础位运算符号
C语言基础位运算符号 1.<< 左移 00011000 << 3 = 11000000(便携的赋值方法:<<=) 2.>> 右移 00100100 &g ...
- c语言中位运算之布尔运算
c语言中位运算中的布尔运算有:&.|.~.^ &:按位与 |:按位或 ~:按位非 ^:按位异或,相同为0,相异为1. 计算规则如下: 位的逻辑运算的作用: 使用位向量做集合编码: 使用 ...
- C语言截取整数的某些位编程,C语言中位运算的巧用(转)
一 .位运算实例 1.用一个表达式,判断一个数X是否是2的N次方(2,4,8,16.....),不可用循环语句. X:2,4,8,16转化成二进制是10,100,1000,10000.如果减1则变成0 ...
最新文章
- call of overloaded 'round(float)' is ambiguous
- 【机器视觉】 export_def算子
- https加密过程(详细)
- 信息学奥赛一本通C++语言——1012:计算多项式的值
- fastdfs-配合nginx-麻烦的
- 某一年某一年_一年关于开放组织的对话
- mysql 排序速度_MySQL排序速度慢而且可能不稳定
- Go语言---字符串的基本操作
- Drools教程 —— 简介
- 2018年,Windows Phone 8.1还能做什么
- 计算机课代表中段考总结,第一学期中段考试总结
- iphone 快捷指令打开 行程码
- 一个简单的图层,让您可以在YouTube API上发挥想象力
- 电脑合上盖子不进入休眠模式的问题解决方案
- 史上最强算法论战:请不要嘻哈,这是哈希
- caplusDB君 · 行业新闻汇编(12月25号)
- 移动开发:Android Ant一键自动打多渠道包(xmltask)
- Java后端架构师的成长之路(二)——Java设计模式(2)
- 显示器连接vdc服务器,基于数字化校园的图像分析型VDC服务器的设计与实现
- Proteus基础元件名称
热门文章
- uniapp 如何给搜索框设值_头部导航栏基础设置
- python程序设计案例课堂第二篇_Python程序设计案例课堂第二篇核心技术第十章图形用户界面...
- mysql创建只读权限用户_新品速递 | Harbor 修复权限提升漏洞,MySQL Plus 支持密码强度校验以及审计功能...
- python中chr函数的用法_python中hex,oct,chr,ord函数讲解
- cleanmymac 4.2_15北师大版八年级物理上册4.2节乐音微课视频|知识点|练习
- Spring Boot 开发web 项目
- wxWidgets:最小的 wxWidgets 示例
- wxWidgets:wxSetCursorEvent类用法
- wxWidgets:wxLayoutAlgorithm类用法
- wxWidgets:wxBitmapToggleButton类用法