第1个回答 2011-07-11
那里用楼上两位那样罗嗦。
#include <intrins.h>
加入上述的头文件,不光解决了循环右移,还有循环左移的函数,8位、16位的都有。
第2个回答 2011-07-09
你的这个数是 0111 1111 1111 1111 1111 1111 1111 1111 0x7fffffff 已经超过了51单片机的表达范围,所以直接用命令是不行了,用一个算法吧。
第3个回答 2011-07-11
#include <intrins.h>
以后就引用库里的函数就ok啦
第4个回答 2011-07-09
不要固定在固有的指令上,你要看看这条左移右移指令做什么用,比如算术左移乘2,就用乘法,
第5个回答 推荐于2016-12-01
typedef unsigned char mytype;
mytype right_move(mytype number)
{
if( number & 1 )
number = number>>1 | 1<<(sizeof(mytype)*8-1) ;
else
number = number>>1 ;
return number;
}本回答被提问者采纳