• 设置某一位的值
  • 传送门:获取二进制或者16/32位的某一位的值
  • 1 | 任何值 = 1 ,任何值&0 = 0 【利用这两点进行设置值】
  • 上代码
  • //获取二进制某一位的值
    uint8_t get_one_bit_value(uint32_t src, uint8_t bit_num)
    {return (uint8_t)((src >> (bit_num - 1)) & 1);
    }//设置二进制某一位的值
    uint32_t set_one_bit_value(uint32_t src, uint8_t bit_num,bool bit_value)
    {if(bit_value){return (uint32_t)((src |= (1 << (bit_num - 1))));//置1}else{return (uint32_t)((src &= ~(1 << (bit_num - 1))));//置0}}
    int main()
    {uint32_t test_v = 0x12345678;   //0001[1] 0010[2] 0011[3] 0100[4] 0101[5] 0110[6] 0111[7] 1000[8] uint32_t test_u = 0;   uint8_t i, j;                   //[高位>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>低位]uint8_t test_buff_u[32] = {0};uint32_t test_buff_v[32] = {0};for (i = 1; i <= 32; i++){test_buff_u[i - 1] = get_one_bit_value(test_v, i);}for (i = 1; i <= 8; i++){for (j = 1; j <= 4; j++){printf("%d|", test_buff_u[(i - 1) * 4 + (j - 1)]);}printf("\n");}for (i = 1; i <= 32; i++){test_buff_v[i - 1] = set_one_bit_value(test_u, i,(bool)test_buff_u[i-1]);}for (i = 1; i <= 8; i++){for (j = 1; j <= 4; j++){printf("%08x|", test_buff_v[(i - 1) * 4 + (j - 1)]);}printf("\n");}
    }

    打印结果:

  • 0|0|0|1|
    1|1|1|0|
    0|1|1|0|
    1|0|1|0|
    0|0|1|0|
    1|1|0|0|
    0|1|0|0|
    1|0|0|0|
    00000000|00000000|00000000|00000008|[第1、2、3置0,第4位置1]
    00000010|00000020|00000040|00000000|[第1、2、3置1,第4位置0]
    00000000|00000200|00000400|00000000|
    00001000|00000000|00004000|00000000|
    00000000|00000000|00040000|00000000|
    00100000|00200000|00000000|00000000|
    00000000|02000000|00000000|00000000|
    10000000|00000000|00000000|00000000|
  • 看不懂请提问一下,有一点点绕

设置二进制或者16/32位的某一位的值相关推荐

  1. 获取二进制或者16/32位的某一位的值

    主要是按位与,这样可以把某一位的值给算出来: 1&1 = 1: 1&0 = 0:可以看出1与上0/1都等于其本身 直接上代码 推荐:免费的C语言和linuxPDF文档:传送门 //获取 ...

  2. 8/16/32/64位单片机区别

    32位处理器 首先处理器都是8的倍数:8/16/32/64.表示一个时钟周期里,处理器处理的代码数. 8位机有8条线路,每个时钟周期有8个电信号,组成一个字节.8-32,则每个时钟周期从传输1个字节到 ...

  3. War of Inazuma (Easy Version) 阅读理解-n维超立方体-二进制-longlong右移32位

    这个地方的地图可以被看作一个n维超立方体,有着恰好2n2^n2n个点.每个顶点编号从0到2n−12^n-12n−1.当且仅当两个顶点在二进制表示下仅有一位不同时这两个顶点相邻. 在战争中,每个点都被敌 ...

  4. 汇编语言——16位寄存器实现32位二进制数左移4位。

    问题描述 16位寄存器实现32位二进制数左移4位. 源代码 MOV CL, 04 SHL DX, CL MOV BL, AH SHL AX, CL SHR BL, CL OR DL, BL 说明:  ...

  5. 从16位到32位再到64位,为何16年过去,依然没有128位系统出现?

    绝大部分人都没有意识到128位的处理器早已经存在了,并且已经存在了几十年.这么多年过去了,不光是128位的处理器出现了,256位.512位的处理器也同样出现了,比如Nvidia GTX 280这样的显 ...

  6. 8位深, 16位深,24位深,32位深图片显示原理及对比

    我们都知道一张图片可以保存为很多种不同的格式,比如bmp/png/jpeg/gif等等.这个是从文件格式的角度看,我们抛开文件格式,看图片本身,我们可以分为8位, 16位, 24位, 32位等. 单击 ...

  7. 编写函数unsigned int reverse_bit(unsigned int value),实现无符号二进制整数在32位机器上的bit位翻转

    编写函数unsigned int reverse_bit(unsigned int value),实现无符号二进制整数在32位机器上的bit位翻转 如: 在32位机器上25这个值包含下列各位: 000 ...

  8. c语言16左移3位,点阵16*32综合(间断、上移、下移、左移、右移、左拉、右拉)C程序...

    点阵16*32综合(间断.上移.下移.左移.右移.左拉.右拉)C程序,硬件电路:行驱动74HC154+S8550三极管,列驱动74HC595,具体原理图祥见:http://www.51hei.com/ ...

  9. 梦回----32位CPU和64位CPU的通用寄存器

    1 32位Intel的CPU通用寄存器 32位CPU所含有的寄存器有:4个数据寄存器(EAX.EBX.ECX和EDX):2个变址和指针寄存器(ESI和EDI):2个指针寄存器(ESP和EBP):6个段 ...

最新文章

  1. python展示文件_python 文件操作实力显示
  2. java面试常见面试问题_Java面试准备:15个Java面试问题
  3. 点击编辑框全选内容java_Android 中使用EditText 点击全选再次点击取消全选功能
  4. java 程序迁移后oracle 数字溢出_Spring Boot 应用迁移到 Java 11
  5. dubbo服务化最佳实践
  6. linux添加环境变量并生效,linux(ubtuntu)添加环境变量,立即生效
  7. soapUI 接口测试断言
  8. idea怎么集成svn服务端,使用Mac自带svn搭建服务器,并使用idea进行连接(示例代码)...
  9. 用acdsee制作html,ACDSee软件图像处理操作实用技巧
  10. 解决imp导入dmp文件报:IMP-00038: 无法转换为环境字符集句柄IMP-00000: 未成功终止导入
  11. 91手机助手官网iPhone版 v5.6.1 官方版
  12. 小象大数据全套视频教程
  13. Proxy-NCA Loss、Proxy Anchor Loss
  14. UE4遇到的各种奇葩问题
  15. Axure 8 设置当前动态时间
  16. 鸿蒙小游戏-俄罗斯方块
  17. 台湾华夏堂古代玉器收藏家~件件珍贵难得一见
  18. 国产麒麟系统PXE安装-传统bios(legacy)引导
  19. ViewModel是如何在配置更改后继续留存数据的
  20. 物联网卡智能净水器打造智慧洁净生活

热门文章

  1. Error response from daemon: manifest not found.
  2. 【学习笔记】第五章 python3核心技术与实践--字典和集合
  3. 团队任务3:软件设计与开发准备
  4. Oracle常用语句:分页查询语句的写法
  5. 网络协议基础:“工作中模模糊糊的概念,这次终于理顺了!”
  6. 如何干掉网易云音乐?这儿有个可行性未知的技术方案
  7. php最后最后再执行,php最后几个函数
  8. 新版刷卡_有信用卡的注意了,新版征信即将上线,以后刷卡消费要当心了!
  9. 深度linux卡顿,Deepin很卡怎么办?Deepin卡顿解决方法盘点
  10. SpringAMQP--消息转换器