标题: 各位大佬,这个二进制转16进制为什么要除16啊? [打印本页]

作者: x51hei666    时间: 2020-3-12 10:24
标题: 各位大佬,这个二进制转16进制为什么要除16啊?
DisplayData[0] = smgduan[IrValue[2]/16];
DisplayData[1] = smgduan[IrValue[2]%16];

作者: 罗程峰8200    时间: 2020-3-12 13:11
10进制 转16进制 你这个还是分开存储,方便显示 应该是液晶屏要用的数据
作者: xxpp2011    时间: 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[]中。
作者: f556    时间: 2020-3-12 14:50
除16是按16进制拆位时丢个位。常用的是/10,%10,按10进制拆出个、十、百、千位。
0x1C(十进28)%10---->8
0x1C(十进28)/10--->2丢8
作者: x51hei666    时间: 2020-3-12 15:35
xxpp2011 发表于 2020-3-12 14:31
这个不是二进制转16进制,IrValue[2]应该已经是16进制了。猜测是两位的16进制数,IrValue[2]/16意思是取IrV ...

是16进制,我看错了
作者: x51hei666    时间: 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]的低位?
作者: 17362564688    时间: 2020-3-12 16:21
四位二进制 构成一位16进制
作者: 17362564688    时间: 2020-3-12 16:22
10进制转16才除16取余
作者: x51hei666    时间: 2020-3-12 17:06
f556 发表于 2020-3-12 14:50
除16是按16进制拆位时丢个位。常用的是/10,%10,按10进制拆出个、十、百、千位。
0x1C(十进28)%10----> ...

但是程序里是/16和%16呀,这个怎么弄啊?
作者: xxpp2011    时间: 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。


作者: x51hei666    时间: 2020-3-13 09:34
xxpp2011 发表于 2020-3-12 17:13
IrValue[2]/16意思是除以16后取整,假设IrValue[2]为0X23,因为16进制的第二位是2×16^1,所以除以16就相 ...

谢谢大佬

作者: c114508791    时间: 2020-3-13 10:30
四位二进制 构成一位16进制
作者: 开源过客    时间: 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进制显示红外按键值。
作者: 森森111    时间: 2020-3-13 16:51
每4位二进制看成一位16进制
作者: LMXFF    时间: 2020-3-13 19:20
四位二进制 构成一位16进制哈哈
作者: luozhenghao    时间: 2020-3-13 20:06
前面得到的就是一位16进制数2,这就是分开来算
作者: 鹿人甲    时间: 2020-3-13 21:52
二的四次方,四位二进制,构成一位16进制




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1