函數(shù)功能:將輸入字符串 src循環(huán)右移n位 result為輸出結(jié)果
成都創(chuàng)新互聯(lián)主營(yíng)蘭考網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件定制開(kāi)發(fā),蘭考h5小程序制作搭建,蘭考網(wǎng)站營(yíng)銷(xiāo)推廣歡迎蘭考等地區(qū)企業(yè)咨詢(xún)
要求:以效率最高的方式實(shí)現(xiàn)
示例:
“abcde” --2-- "deabc"
"abcde"--8--"cdeab"
void right_shift_r(const char* src,char* result,unsigned int n)
{
? ? unsigned int len = strlen(src);
int i=0;
? ? for(i=0;ilen;i++)
{
? ? ? ? ? ? result[i] = src[i+n]%len;?
}
}
先說(shuō)第一個(gè)問(wèn)題:
比如用查表法將結(jié)果保存到變量i中,查表變量為x,則i=table[x],記住c語(yǔ)言里面數(shù)組是從0開(kāi)始的,比如說(shuō)上面的0x01就是table[0],0x02是table[1],以此類(lèi)推。
再說(shuō)第二個(gè)問(wèn)題:
比如說(shuō)從p1.0口發(fā)送出去,則可以寫(xiě)為
sbitout=p1^0;//定義out為p1.0口,這樣今后好寫(xiě)程序
chari;
for(i=0;i8;i++)
{
out=data0x80;//因?yàn)楦呶辉谇?,將它?xiě)成二進(jìn)制就明白了
data=1;
}
上面的程序就能搞定了;
應(yīng)該是所有的單片機(jī)都有cy位(不知道浮點(diǎn)dsp有沒(méi)有);
c語(yǔ)言中左移和右移之后低位或高位自動(dòng)補(bǔ)零,cy位也保持為零(視編譯器而定,這個(gè)得看編譯器手冊(cè)),有些編譯器提供了循環(huán)移位的函數(shù);
還有什么不明白的補(bǔ)充問(wèn)題就是
代碼文本:
#include "stdio.h"
int myfun(int m,int n){//十進(jìn)制循環(huán)右移
int tmp,i;
for(tmp=m,i=0;tmp;i++,tmp/=10);
if((n%=i)0) n+=i;
for(tmp=i-n,i=1;tmp;i*=10,tmp--);
for(tmp=n,n=1;tmp;n*=10,tmp--);
return m%n*i+m/n;
}
int main(int argc,char *argv[]){
int n,m;
printf("Please enter n m(int 0n,m1000000000)...\n");
scanf("%d%d",n,m);
printf("你輸入的數(shù)是: %d\n",n);
printf("右移%d位后是: %d\n",m,myfun(n,m));
return 0;
}
當(dāng)然不可以。
xx[i][j]+=(xx[i][j]4)等價(jià)于
xx[i][j]=xx[i][j]+(xx[i][j]4); 是右移4位,換算成二進(jìn)制計(jì)算相當(dāng)于乘以2的4次方。
默認(rèn)只有算術(shù)右移。 要循環(huán)右移需要把最低位保存下來(lái), 然后賦值到最左。
unsigned?int?func(unsigned?int?n)
{
unsigned?int?v=n1;
n=1;
if(v)?n|=1(sizeof(unsigned?int)-1);
return?n;
}
C語(yǔ)言總并沒(méi)有左移函數(shù)和右移函數(shù)。左移和右移是位運(yùn)算符,僅僅適用于整數(shù)型的數(shù)據(jù)。
新聞名稱(chēng):c語(yǔ)言中右移函數(shù)怎么寫(xiě) c語(yǔ)言右移符號(hào)
網(wǎng)頁(yè)URL:http://chinadenli.net/article10/dodicdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、云服務(wù)器、用戶(hù)體驗(yàn)、網(wǎng)站排名、App設(shè)計(jì)、軟件開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
移動(dòng)網(wǎng)站建設(shè)知識(shí)