在c
中左移也就是所說的邏輯移位,
右端補,而右移是算數移位,左端補齊的是最高位
的符號位。
故負數左移,有可能變成正數,但負數右移,肯定還是負數。
用進製的形式對資料進行賦值
,這進製的數代表的是補碼。
i = 0xfffffff7; //0xfffffff7
是補碼,而不是原碼,故
i = -9
printf("%d %x\n", i, i);
i = -9;
printf("%d %x\n", i, i); //
故兩個printf
輸出結果相同
* compiler: gcc
* last update: tue 01 may 2012 07:31:44 pm cst
#include
int main(int argc, char **ar**)
int i = 0x8000000f; //
這裡的0x8000000f
為int
型資料的補碼形式
int j =
i >> 3; //
右移是算術移位,
i的值不變,
左端補齊的是符號位
int k = i
左移是邏輯移位,右端補
printf("%d %x\n", i, i);
printf("%d %x\n", j, j);
printf("%d %x\n", k, k);
i = -9;
printf("%d %x\n", i, i);
i = 0xfffffff7;
j = i >> 3;
k = i <
printf("%d %x\n", i, i);
printf("%d %x\n", j, j);
printf("%d %x\n", k, k);
c語言負數左移右移 C語言中的左移與右移
先說左移,左移就是把乙個數的所有位都向左移動若干位,在c中用 i i 2 把i裡的值左移2位也就是說,1的2進製是000.0001 這裡1前面0的個數和int的位數有關,32位機器,gcc裡有31個0 左移2位之後變成000.0100,也就是10進製的4,所以說左移1位相當於乘以2,那麼左移n位就是...
c語言負數左移右移 C語言中關於迴圈左移和迴圈右移
昨天在解答同學的問題中,又接觸了好久沒碰的c中的位操作。在重接觸的過程中,又理解了一遍計算機儲存資料的細節,於是分享給大家看一下。讓我們先看一下題目 編寫乙個程式,輸入兩個整數i j,如果j的值大於0,則將i迴圈左移j位 如果j的值小於0,則將i迴圈右移j位,最後輸出i的值。輸入輸出格式要求 輸入格...
c語言負數左移右移 C語言 位運算子的運算規則
位運算是指按照二進位制進行的運算,在c語言中,提供了6種的位運算子,他們分別是按位與 按位或 按位異或 按位取反 左移 和右移 這些運算子只能用整型運算元,也就是說只能用於帶符號和不帶符號的short,int,long,char型別。1 按位與 按位與是指講兩個運算元按照二進位制位進行 與 運算。兩...