在c語言左移
1. C程序中,左移「<<」、右移「>>」 的具體用法是什麼
c語言中,「<<」為左移運算符,「>>」為右移運算符。
具體使用方法如下:
1、左移運算符(<<)
將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。
例:a = a << 2 將a的二進制位左移2位,右補0,
左移1位後a = a * 2;
若左移時舍棄的高位不包含1,則每左移一位,相當於該數乘以2。
2、右移運算符(>>)
將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。
操作數每右移一位,相當於該數除以2。
例如:a = a >> 2 將a的二進制位右移2位。
左補0 or 補1 得看被移數是正還是負。
2. 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位
}
}
}
3. 關於C語言的左移(<<)和右移(>>)
左移比較簡單,右邊補0(移幾位就補幾個0),左邊丟掉。
右移比較復雜,右移分兩種:
(1)邏輯右移,左邊補0(移幾位補幾位),右邊移出去的丟掉。
(2)算術右移,左邊補最高位(即原來的最高位是0就補0,是1就補1,因為最高位代表符號,這樣可以保證負數不會變成正數),右邊丟掉。
4. C語言中怎樣表示移位啊例如將某個值左移兩位
利用位操作:"<<"就是左移 ">>"就是右移
舉個例子:將a左移2位,然後賦給a
a<<=2 也即是a=a<<2
在C語言中左移1位,相當於乘2,右移相當於除2。
5. c語言左移問題
但左移概念是左邊去掉n個二進制位,右邊補n個零,但這是指原來的二進制數是「機器數」。就是如果使用unsigned char 來存儲這個數的話,就是這樣的。
例如:0001 0010(十進制為18)左移4位,
得到的應該是0010 0000(十進制32),但是18*16≡32(模256)
當左移左邊不去零,右邊單純補零的時候得到0001 0010 0000,這時候得到的恰好是
288=18*16,但這只是單純往左移了(「丟失」了移出的4位)
如果仍是存儲在unsigned char 中的話,就仍是0010 0000(十進制32)
用左移的時候194<<4,是1100 0010 0000,若仍是存儲在unsigned char 中的話,就仍是0010 0000,這就是溢出了。