① c語言移位運算
右移對符號位的處理和左移不同,對於有符號整數來說,比如int類型,右移會保持符號位不變,例如:10100110
>>5(假設字長為8位),則得到的是
11111101。
總之,在c中,左移是邏輯/算術左移(兩者完全相同),右移是算術右移,會保持符號位不變.實際應用中可以根據情況用左/右移做快速的乘/除運算,這樣會比循環效率高很多.
所以,short
a=0xf245,即a=1111001001000101,經過右移後,b=a>>8;b=1111111111110010,即b=0xfff2。注意是有符號右移為算術右移!!!
② C語言左位移運算符和右位移運算符是什麼意思,怎麼運算,舉個例子..
就是把一個數轉化成二進制再直接對他進行操作
例如:
45>>2 //45右移兩位
45的二進制為:101101
右移兩位就為: 001011
001011再轉化為十進制為:11
所以45>>2= 11
左移運算符
45<<2
45的二進制為:101101
左移兩位就為:10110100
10110100再轉化為十進制為:180
所以45<<2=180
③ 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 得看被移數是正還是負。
④ C語言>>右移運算
>>是2進制右移,相反的還有<<是2進制左移。
舉例如下,如果一個變數
int
x=5;
則x的2進製表示為:
0000000000000101
執行x>>1代表x右移一位,就是上面這一串整體右移,末位淘汰,高位補0
於是x變成了
0000000000000010
也就是x變成了2
<<左移相反,高位淘汰,末位補0
你的那種x[i][j]+=>4是不行的,沒有這種運算符。
⑤ C語言中的右移一位是不是應該除以2
右移一位相當於除以2。
例:5>>1
5的二進製表示是101,那麼右移一位之後是10就是2了,是整除的;左移的話就是在後面補一個零,相當於是乘以二,那麼變成了1010,十進制是10。
101右移,就是把最後一位拿掉了,是10這個是二進制的,十進是2,5/2本來是小數,但這里是整數操作的,所以把小數部分去掉了。
(5)c語言中右移怎麼計算擴展閱讀
C語言中的左移
1、左移就是把一個數的所有位都向左移動若干位,在C中用<<運算符.例如:
inti=1;
i=i<<2;//把i里的值左移2位。
2、補符號位,就是一個signedchara=0xff;
a=a>>1;/*它仍是0xff,補了符號位。最高位是符號位=1,右移後符號位保持不變*/;
a=0x80;
a=a>>1;/*變成了0xc0*/
a=0x1f;
a=a>>1;/*變成了0x0f,因為它開始的符號位就是0*/。
⑥ C語言中的左移<<和右移>>怎樣運算的
移位操作符的兩個操作數必須是整型的。整個移位表達式的值的類型也是整型的,而且,左移位操作符與右移位操作符的運算並不對稱。
⑦ c語言中右移是怎麼回事,移位後左邊補0嗎還是補最右邊的數,規則是什麼啊
這要看操作的是什麼數字,如果有有符號的,左邊以符號位(即最高為)補齊,否則以0補齊
⑧ c語言中右移』是什麼意思
c語言中右移「>>」意思是將數的對應的二進制右移,移了以後空出的補零,比如a等於129的二進制是10000001,a>>2,則a等於00100000,即a等於32,相當與129除以4等於32。右移一位相當於a除以2。左移即「<<」,將數的對應的二進制左移,相當於將原來的數乘以2,比如a等於5,的二進制是00000101,a<<2,則a等於00010100(右邊空出的補零)。
⑨ c語言 右移運算
當然不可以。
xx[i][j]+=(xx[i][j]>>4)等價於
xx[i][j]=xx[i][j]+(xx[i][j]>>4); >>是右移4位,換算成二進制計算相當於乘以2的4次方。