标题: 单片机C语言 24位数字,如何依次左移给某个位? [打印本页]

作者: xyxiyangyaang    时间: 2021-11-16 09:10
标题: 单片机C语言 24位数字,如何依次左移给某个位?
我用的是C8051F330的单片机, 我现在有24位的数据(数据要可加可减,使用unsigned int,如unsigned long temp=0x001f2a3c,但高8位不需要),要依次把后24位(1f2a3c)发送给某个位(sdi),
我用的是_crol_(temp,1)的函数,但是这个函数貌似只是循环左移后八位的数,而<<貌似只能左移后16位的数,
请教大家,有没有什么办法,谢谢?

作者: gain    时间: 2021-11-16 10:02
(temp & (1<<n)) 就是取出temp的每一位, n 就是你要取得第几位(可以使你说的0-23 就是24位数据)
作者: 保持微笑    时间: 2021-11-16 10:20
这个问题我这几天正好弄过相似的,我是将这些每一位取出来放到数组里,然后通过数组就得到了想用的数
作者: 名字不是重点    时间: 2021-11-16 10:46
用“_irol_”就能4字节32位环移了。就差一个字母
作者: xyxiyangyaang    时间: 2021-11-16 11:36
用这个_lrol_,就可以对long进行操作了,谢谢
作者: yzwzfyz    时间: 2021-11-18 15:07
把它分成四个部分,每个部分一个字节,传送时,最高字节不送就可以了。




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