C語言中沒有提供循環(huán)移位的操作符,但可以通過簡潔的方式實現(xiàn)循環(huán)移位
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、個舊ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學管理、有技術(shù)的個舊網(wǎng)站制作公司
設(shè)一個操作數(shù)x有s位則循環(huán)左移n位的操作為:
(x n) | (x (s - n));
同理右移n位位:
(x n) | (x (s - n));
你可以#define XX (xn) | (x(s-n)
。。。
補充下:上面是當 n=s的情況 當ns的話 只要把n改為 (n%s)就可以了
C51帶進位的循環(huán)左右移指令是什么:這必須用匯編語言:RLC
A、
RRC
A。
_crol_()、_cror_(),都不是指令,它們是C語言的函數(shù)。
C51不能實現(xiàn)帶進位的移位,有兩種辦法完成這個功能,一種是在C中嵌入?yún)R編,另一種就是使用特殊寫法。
在這里我只介紹使用C特殊寫法完成左移或者右移的方法,請你參考,如果遇到問題,歡迎交流。
看下面的例子:
CY=ACC1;
...
CY=ACC0x80;
這兩個語句編譯后會產(chǎn)生帶進位右移和左移指令,如果你的數(shù)據(jù)不是在這兩個寄存器,請你根據(jù)情況變通。
例如:
unsigned char c;
ACC=c;
CY=ACC1;
......