用位运算构建特定的二进制数

  • 寄存器操作需要给特定位给特定值
  • 使用移位获取特定位为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语言用位运算构建特定的二进制数相关推荐

  1. 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一2.4 位运算构建特定二进制数...

    本节书摘来自异步社区<嵌入式Linux与物联网软件开发--C语言内核深度解析>一书中的第2章,第2.4节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区"异步社区" ...

  2. C语言单片机位运算——看完马上懂(个人总结)

    位运算:    0XF => 1111    0XF0 => 1111 0000    0X0F0F=0XF0F => 1111 0000 1111 &(与):    C语言 ...

  3. c语言程序设计施莹答案,C语言课件-位运算.ppt

    C语言课件-位运算.ppt C语言程序设计,信息工程学院 施莹 2019年11月,第12章 位运算,C语言是为描述系统而设计的,其功能应当具有汇编的功能 故C语言具有高级语言的的功能,也肯定低级语言的 ...

  4. c语言 枚举,位运算

    c语言 枚举,位运算 枚举 枚举类型的定义和枚举变量的说明 一.枚举的定义枚举类型定义的一般形式为 二.枚举变量的说明 枚举类型变量的赋值和使用 位运算 位域 一.位域的定义和位域变量的说明 二.位域 ...

  5. 单片机c语言位运算写法,单片机与嵌入式系统中C语言的位运算小记

    原标题:单片机与嵌入式系统中C语言的位运算小记 编了个PIC的项目,对里的还是蛮有感悟的,特此记录一下. 譬如说,在程序中定义了一个char类型的变量, purge_short_enable_flag ...

  6. 谭浩强c语言不讲位运算呢,谭浩强C语言_CHAR12位运算.DOC

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 谭浩强C语言_CHAR12位运算.DOC11页 ...

  7. C语言基础位运算符号

    C语言基础位运算符号 1.<< 左移 00011000 << 3 = 11000000(便携的赋值方法:<<=) 2.>> 右移 00100100 &g ...

  8. c语言中位运算之布尔运算

    c语言中位运算中的布尔运算有:&.|.~.^ &:按位与 |:按位或 ~:按位非 ^:按位异或,相同为0,相异为1. 计算规则如下: 位的逻辑运算的作用: 使用位向量做集合编码: 使用 ...

  9. C语言截取整数的某些位编程,C语言中位运算的巧用(转)

    一 .位运算实例 1.用一个表达式,判断一个数X是否是2的N次方(2,4,8,16.....),不可用循环语句. X:2,4,8,16转化成二进制是10,100,1000,10000.如果减1则变成0 ...

最新文章

  1. call of overloaded 'round(float)' is ambiguous
  2. 【机器视觉】 export_def算子
  3. https加密过程(详细)
  4. 信息学奥赛一本通C++语言——1012:计算多项式的值
  5. fastdfs-配合nginx-麻烦的
  6. 某一年某一年_一年关于开放组织的对话
  7. mysql 排序速度_MySQL排序速度慢而且可能不稳定
  8. Go语言---字符串的基本操作
  9. Drools教程 —— 简介
  10. 2018年,Windows Phone 8.1还能做什么
  11. 计算机课代表中段考总结,第一学期中段考试总结
  12. iphone 快捷指令打开 行程码
  13. 一个简单的图层,让您可以在YouTube API上发挥想象力
  14. 电脑合上盖子不进入休眠模式的问题解决方案
  15. 史上最强算法论战:请不要嘻哈,这是哈希
  16. caplusDB君 · 行业新闻汇编(12月25号)
  17. 移动开发:Android Ant一键自动打多渠道包(xmltask)
  18. Java后端架构师的成长之路(二)——Java设计模式(2)
  19. 显示器连接vdc服务器,基于数字化校园的图像分析型VDC服务器的设计与实现
  20. Proteus基础元件名称

热门文章

  1. uniapp 如何给搜索框设值_头部导航栏基础设置
  2. python程序设计案例课堂第二篇_Python程序设计案例课堂第二篇核心技术第十章图形用户界面...
  3. mysql创建只读权限用户_新品速递 | Harbor 修复权限提升漏洞,MySQL Plus 支持密码强度校验以及审计功能...
  4. python中chr函数的用法_python中hex,oct,chr,ord函数讲解
  5. cleanmymac 4.2_15北师大版八年级物理上册4.2节乐音微课视频|知识点|练习
  6. Spring Boot 开发web 项目
  7. wxWidgets:最小的 wxWidgets 示例
  8. wxWidgets:wxSetCursorEvent类用法
  9. wxWidgets:wxLayoutAlgorithm类用法
  10. wxWidgets:wxBitmapToggleButton类用法