设置二进制或者16/32位的某一位的值
- 设置某一位的值
- 传送门:获取二进制或者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位的某一位的值相关推荐
- 获取二进制或者16/32位的某一位的值
主要是按位与,这样可以把某一位的值给算出来: 1&1 = 1: 1&0 = 0:可以看出1与上0/1都等于其本身 直接上代码 推荐:免费的C语言和linuxPDF文档:传送门 //获取 ...
- 8/16/32/64位单片机区别
32位处理器 首先处理器都是8的倍数:8/16/32/64.表示一个时钟周期里,处理器处理的代码数. 8位机有8条线路,每个时钟周期有8个电信号,组成一个字节.8-32,则每个时钟周期从传输1个字节到 ...
- War of Inazuma (Easy Version) 阅读理解-n维超立方体-二进制-longlong右移32位
这个地方的地图可以被看作一个n维超立方体,有着恰好2n2^n2n个点.每个顶点编号从0到2n−12^n-12n−1.当且仅当两个顶点在二进制表示下仅有一位不同时这两个顶点相邻. 在战争中,每个点都被敌 ...
- 汇编语言——16位寄存器实现32位二进制数左移4位。
问题描述 16位寄存器实现32位二进制数左移4位. 源代码 MOV CL, 04 SHL DX, CL MOV BL, AH SHL AX, CL SHR BL, CL OR DL, BL 说明: ...
- 从16位到32位再到64位,为何16年过去,依然没有128位系统出现?
绝大部分人都没有意识到128位的处理器早已经存在了,并且已经存在了几十年.这么多年过去了,不光是128位的处理器出现了,256位.512位的处理器也同样出现了,比如Nvidia GTX 280这样的显 ...
- 8位深, 16位深,24位深,32位深图片显示原理及对比
我们都知道一张图片可以保存为很多种不同的格式,比如bmp/png/jpeg/gif等等.这个是从文件格式的角度看,我们抛开文件格式,看图片本身,我们可以分为8位, 16位, 24位, 32位等. 单击 ...
- 编写函数unsigned int reverse_bit(unsigned int value),实现无符号二进制整数在32位机器上的bit位翻转
编写函数unsigned int reverse_bit(unsigned int value),实现无符号二进制整数在32位机器上的bit位翻转 如: 在32位机器上25这个值包含下列各位: 000 ...
- c语言16左移3位,点阵16*32综合(间断、上移、下移、左移、右移、左拉、右拉)C程序...
点阵16*32综合(间断.上移.下移.左移.右移.左拉.右拉)C程序,硬件电路:行驱动74HC154+S8550三极管,列驱动74HC595,具体原理图祥见:http://www.51hei.com/ ...
- 梦回----32位CPU和64位CPU的通用寄存器
1 32位Intel的CPU通用寄存器 32位CPU所含有的寄存器有:4个数据寄存器(EAX.EBX.ECX和EDX):2个变址和指针寄存器(ESI和EDI):2个指针寄存器(ESP和EBP):6个段 ...
最新文章
- python展示文件_python 文件操作实力显示
- java面试常见面试问题_Java面试准备:15个Java面试问题
- 点击编辑框全选内容java_Android 中使用EditText 点击全选再次点击取消全选功能
- java 程序迁移后oracle 数字溢出_Spring Boot 应用迁移到 Java 11
- dubbo服务化最佳实践
- linux添加环境变量并生效,linux(ubtuntu)添加环境变量,立即生效
- soapUI 接口测试断言
- idea怎么集成svn服务端,使用Mac自带svn搭建服务器,并使用idea进行连接(示例代码)...
- 用acdsee制作html,ACDSee软件图像处理操作实用技巧
- 解决imp导入dmp文件报:IMP-00038: 无法转换为环境字符集句柄IMP-00000: 未成功终止导入
- 91手机助手官网iPhone版 v5.6.1 官方版
- 小象大数据全套视频教程
- Proxy-NCA Loss、Proxy Anchor Loss
- UE4遇到的各种奇葩问题
- Axure 8 设置当前动态时间
- 鸿蒙小游戏-俄罗斯方块
- 台湾华夏堂古代玉器收藏家~件件珍贵难得一见
- 国产麒麟系统PXE安装-传统bios(legacy)引导
- ViewModel是如何在配置更改后继续留存数据的
- 物联网卡智能净水器打造智慧洁净生活
热门文章
- Error response from daemon: manifest not found.
- 【学习笔记】第五章 python3核心技术与实践--字典和集合
- 团队任务3:软件设计与开发准备
- Oracle常用语句:分页查询语句的写法
- 网络协议基础:“工作中模模糊糊的概念,这次终于理顺了!”
- 如何干掉网易云音乐?这儿有个可行性未知的技术方案
- php最后最后再执行,php最后几个函数
- 新版刷卡_有信用卡的注意了,新版征信即将上线,以后刷卡消费要当心了!
- 深度linux卡顿,Deepin很卡怎么办?Deepin卡顿解决方法盘点
- SpringAMQP--消息转换器