标题: 请教单片机程序代码问题 如果是取高位的话,那是怎么取法的? [打印本页]

作者: fdingy    时间: 2018-1-22 15:16
标题: 请教单片机程序代码问题 如果是取高位的话,那是怎么取法的?
代码如下:
char TIME[7] = {0x00, 0x57, 0x10, 0x23, 0x05, 0x02, 0x17};

LCD12864_W(0x30+TIME[6]/16);               
LCD12864_W(0x30+(TIME[6]&0x0f));


请问下:TIME[6]/16, 是什么意思的?
0x17/16=啥?
如果是取高位的话,那是怎么取法的?






作者: cccc888    时间: 2018-1-22 16:32
TIME[6]/16<==>TIME[6]>>4


作者: fdingy    时间: 2018-1-22 17:17
cccc888 发表于 2018-1-22 16:32
TIME[6]/16TIME[6]>>4

非常感谢
作者: ahshmj    时间: 2018-1-22 21:34
其实从代码的效率看,除法效率低(运行的慢),右移好些。
作者: yzwzfyz    时间: 2018-1-23 12:35
地板说法不完全的,在此还是错的。单字节除法一条指令便可完成,而/16用移位需要4条指令.
作者: 无痕1234    时间: 2018-1-23 13:05
2路直流电机驱动模块正反转PWM调速+双H桥步进电机迷你电机驱动
作者: wen_wen    时间: 2018-1-23 14:04
主要看你使用的芯片,除法和移位如何执行的。
作者: ahshmj    时间: 2018-1-23 14:54
yzwzfyz 发表于 2018-1-23 12:35
地板说法不完全的,在此还是错的。单字节除法一条指令便可完成,而/16用移位需要4条指令.

单字节除法4周期指令,移位指令1周期指令。在这里刚刚好执行时间是一样的。
作者: yzwzfyz    时间: 2018-1-25 12:34
版主说的很对!
只是移位四次后无法保证高四位=0,为此还需要……

倒不如用 SWAP,再加一条高四位屏蔽令,也能达成除以16的目的,且也只用2个周期。
作者: 1iololokk    时间: 2018-1-25 14:53
只是移位




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