㈠ c語言中左移函數和右移函數分別是什麼,使用格式是什麼
C語言總並沒有左移函數和右移函數。左移和右移是位運算符,僅僅適用於整數型的數據。
㈡ C語言左位移運算符和右位移運算符是什麼意思,怎麼運算,舉個例子..
就是把一個數轉化成二進制再直接對他進行操作
例如:
45>>2 //45右移兩位
45的二進制為:101101
右移兩位就為: 001011
001011再轉化為十進制為:11
所以45>>2= 11
左移運算符
45<<2
45的二進制為:101101
左移兩位就為:10110100
10110100再轉化為十進制為:180
所以45<<2=180
㈢ C語言和單片機中的左移右移
# include "reg51.h" // 包含頭文件
#define uchar unsigned char
void delay02s(void) // 延時0.2s子程序
{
unsigned char i,j,k;
for ( i=2;i>0;i-- )
for (j=200;j>0;j-- )
for (k=250;k>0;k-- );
}
void main (void) // 主函數
{
uchar i,j;
while (1) // 死循環
{
j=0x01; // j初始化為0x01,左移初始值
for(i=0;i<8;i++) // for循環語句,完成8個循環
{
P1= ~ j; // 對變數j 中的值按位取反後,從P1口輸出
delay02s( ); // 延時0.2s
j= j<<1; // 左移1位
}
j=0x80; // 設置右移初始值j為0x80
for (i=0;i<8;i++)
{
P1= ~ j;
delay02s( );
j= j>>1; // 右移1位
}
}
}
㈣ C語言>>右移運算
>>是2進制右移,相反的還有<<是2進制左移。
舉例如下,如果一個變數
int
x=5;
則x的2進製表示為:
0000000000000101
執行x>>1代表x右移一位,就是上面這一串整體右移,末位淘汰,高位補0
於是x變成了
0000000000000010
也就是x變成了2
<<左移相反,高位淘汰,末位補0
你的那種x[i][j]+=>4是不行的,沒有這種運算符。
㈤ C語言中的左移和右移
左移就是把二進制數向左移動,右邊補0,0的二進制全是0,左移之後右邊再補0,移5和移6沒區別
<<後面的數字表示移多少位
㈥ c語言 右移運算
當然不可以。
xx[i][j]+=(xx[i][j]>>4)等價於
xx[i][j]=xx[i][j]+(xx[i][j]>>4); >>是右移4位,換算成二進制計算相當於乘以2的4次方。
㈦ 單片機 移位操作 右移 C語言
C51系列單片機中_crol_指令是循環左移函數,_cror_是循環右移函數,這是51中特有的指令,別的類型單片機就不能使用了。易於程序的移植和通用性考慮個人比較推薦用<<
左移,
右移>>這兩個C中的移位符號。
㈧ C語言:寫一個函數對鍵入的十進制數循環右移,右移倍數由鍵盤輸入,並在main中輸出移位前後的數。咋寫
代碼文本:
#include "stdio.h"
int myfun(int m,int 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 0<n,m<1000000000)... ");
scanf("%d%d",&n,&m);
printf("你輸入的數是: %d ",n);
printf("右移%d位後是: %d ",m,myfun(n,m));
return 0;
}
㈨ 單片機C語言右移指令怎麼用
用這種移位語句,就是這種結果。
你試試:_crol_()和_cror_()移位函數。
需要先加上頭文件:
#include<intrins.h>