欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c語言左移和循環左移的區別

錢諍諍2年前19瀏覽0評論

c語言左移和循環左移的區別?

在C中,左移是邏輯算術,右移是算術右移,會保持符號位不變.

實際應用中可以根據情況用左/右移做快速的乘/除運算,這樣會比循環效率高很多.

1、左移就是把一個數的所有位都向左移動若干位,在C中用<<運算符.例如:

int i = 1;

i = i << 2; //把i里的值左移2位

也就是說,1的2進制是000...0001(這里1前面0的個數和int的位數有關,32位機器,gcc里有31個0),左移2位之后變成 000...0100,也就是10進制的4,所以說左移1位相當于乘以2,那么左移n位就是乘以2的n次方了。

2、右移對符號位的處理和左移不同,對于有符號整數來說,比如int類型,右移會保持符號位不變,例如:

int i = 0x80000000;

i = i >> 1; //i的值不會變成0x40000000,而會變成0xc0000000

就是說,符號位向右移動后,正數的話補0,負數補1,也就是匯編語言中的算術右移.同樣當移動的位數超過類型的長度時,會取余數,然后移動余數個位.

java負數右移運算,c語言左移和循環左移的區別