1. 程式人生 > >c語言移位詳解

c語言移位詳解

實驗平臺 vs2017

左移位和右移位有區別.

左移位比較簡單,就是直接在低位後面補0;

右移位則比較複雜,

假設有10000000的二進位制數,往右移動一位,則數變為11000000,原因在於補的高位是原來的第一位,

也就是說如果是01000000,則往右移動一位,變為00100000.

需要注意的是也有一個特殊的情況,這是最令人困惑的

考慮以下兩條語句

char a=0x80   //10000000

char b=a<<1>>1;//將a左移一位,再右移一位,賦值給b;

按道理,先左移一位變為00000000,再右移一位應該是00000000

但實際上,b會是10000000

但是還是下面的三條語句,情況就會有不同,

char a=0x80

char b=a<<1;

b=b>>1;

這個時候b就會是我們預料的00000000.

以上就是所有我們需要注意的事項