找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4192|回复: 16
收起左侧

各位大佬,这个二进制转16进制为什么要除16啊?

  [复制链接]
ID:696335 发表于 2020-3-12 10:24 | 显示全部楼层 |阅读模式
DisplayData[0] = smgduan[IrValue[2]/16];
DisplayData[1] = smgduan[IrValue[2]%16];
回复

使用道具 举报

ID:89217 发表于 2020-3-12 13:11 | 显示全部楼层
10进制 转16进制 你这个还是分开存储,方便显示 应该是液晶屏要用的数据
回复

使用道具 举报

ID:452950 发表于 2020-3-12 14:31 | 显示全部楼层
这个不是二进制转16进制,IrValue[2]应该已经是16进制了。猜测是两位的16进制数,IrValue[2]/16意思是取IrValue[2]的高位,IrValue[2]%16意思是取IrValue[2]的低位,smgduan[]是另一个数组,作用是将IrValue[2]的高低位作为编号分别对应smgduan[]中的一个数。最后将这个数放入DisplayData[]中。
回复

使用道具 举报

ID:282850 发表于 2020-3-12 14:50 | 显示全部楼层
除16是按16进制拆位时丢个位。常用的是/10,%10,按10进制拆出个、十、百、千位。
0x1C(十进28)%10---->8
0x1C(十进28)/10--->2丢8
回复

使用道具 举报

ID:696335 发表于 2020-3-12 15:35 | 显示全部楼层
xxpp2011 发表于 2020-3-12 14:31
这个不是二进制转16进制,IrValue[2]应该已经是16进制了。猜测是两位的16进制数,IrValue[2]/16意思是取IrV ...

是16进制,我看错了
回复

使用道具 举报

ID:696335 发表于 2020-3-12 15:59 | 显示全部楼层
xxpp2011 发表于 2020-3-12 14:31
这个不是二进制转16进制,IrValue[2]应该已经是16进制了。猜测是两位的16进制数,IrValue[2]/16意思是取IrV ...

请问IrValue[2]/16为什么是取IrValue[2]的高位,IrValue[2]%16为什么是取IrValue[2]的低位?
回复

使用道具 举报

ID:692997 发表于 2020-3-12 16:21 | 显示全部楼层
四位二进制 构成一位16进制
回复

使用道具 举报

ID:692997 发表于 2020-3-12 16:22 | 显示全部楼层
10进制转16才除16取余
回复

使用道具 举报

ID:696335 发表于 2020-3-12 17:06 | 显示全部楼层
f556 发表于 2020-3-12 14:50
除16是按16进制拆位时丢个位。常用的是/10,%10,按10进制拆出个、十、百、千位。
0x1C(十进28)%10----> ...

但是程序里是/16和%16呀,这个怎么弄啊?
回复

使用道具 举报

ID:452950 发表于 2020-3-12 17:13 | 显示全部楼层
臭大死王八羔子 发表于 2020-3-12 15:59
请问IrValue[2]/16为什么是取IrValue[2]的高位,IrValue[2]%16为什么是取IrValue[2]的低位?

IrValue[2]/16意思是除以16后取整,假设IrValue[2]为0X23,因为16进制的第二位是2×16^1,所以除以16就相当于将高位右移一位到低位,原来的低位是3x16^0,除以16后就成小数被舍去了,所以得到的就是一位16进制数2;
IrValue[2]%16意思是除以16后取余,取的是除以16剩下的余数3,得到一位16进制数3。
同理从8进制,10进制里面取出某一位也是类似的做法,比方说三位数123取中间的十位数就是(123%100)/10,意思是123除以100取余数23再除以10取整数得到2。

回复

使用道具 举报

ID:696335 发表于 2020-3-13 09:34 | 显示全部楼层
xxpp2011 发表于 2020-3-12 17:13
IrValue[2]/16意思是除以16后取整,假设IrValue[2]为0X23,因为16进制的第二位是2×16^1,所以除以16就相 ...

谢谢大佬
回复

使用道具 举报

ID:707498 发表于 2020-3-13 10:30 | 显示全部楼层
四位二进制 构成一位16进制
回复

使用道具 举报

ID:707661 发表于 2020-3-13 14:56 | 显示全部楼层
DisplayData[0] = smgduan[IrValue[2]/16];////除16 取除数是取16进制的高位
DisplayData[1] = smgduan[IrValue[2]%16];////16 取余是取16进制低位
smgduan应该是数码管的真值映射表。
DisplayData 这个数据是直接显示驱动硬件IO的。
多位数码管16进制显示红外按键值。
回复

使用道具 举报

ID:707798 发表于 2020-3-13 16:51 | 显示全部楼层
每4位二进制看成一位16进制
回复

使用道具 举报

ID:707888 发表于 2020-3-13 19:20 | 显示全部楼层
四位二进制 构成一位16进制哈哈
回复

使用道具 举报

ID:707931 发表于 2020-3-13 20:06 | 显示全部楼层
前面得到的就是一位16进制数2,这就是分开来算
回复

使用道具 举报

ID:701297 发表于 2020-3-13 21:52 | 显示全部楼层
二的四次方,四位二进制,构成一位16进制
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表