實驗平台 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.
以上就是所有我們需要注意的事項
C語言移位知識小結
關於c語言移位功能的知識小結如下 1,進行2的n次方計算,使用移位效率會提公升很多 2,移位有時候會導致資料丟失,但有時候這正是我們要的功能 3,右移位操作是不可移植的 4,移位的操作符好是負數的時候,行為不確定。關於第4點進行一點簡單的驗證,寫 如下 include stdio.h int mai...
c語言的移位操作
左移時總是移位和補零。右移時無符號數是移位和補零,此時稱為邏輯右移 而有符號數大多數情況下是移位和補最左邊的位 也就是補最高有效位 移幾位就補幾位,此時稱為算術右移。include using namespace std void main buf 1 temp 0x00ff temp temp 8...
C語言中移位操作
先要了解一下c語言裡所有的位運算都是指二進位制數的位運算。即使輸入的是十進位制的數,在記憶體中也是儲存為二進位制形式。用法 格式是 a 0。功能 將整型數a按二進位制位向左移動m位,高位移出後,低位補0。用法 格式是 a m,a和m必須是整型表示式,要求m 0。功能 將整型數a按二進位制位向右移動m...