C語言左移右移

2021-09-22 21:35:36 字數 530 閱讀 6303

記錄一下今天的收貨。

看下面乙個程式:

unit16_t index;

unit32_t ucrxmsgdata[4]=;

unit16_t data0=canaregs.can_if2data.bit.data_0; // 提取標誌位;

if(data0==0x7e) // 判斷標誌位==7e;

}unit32_t result=0; // data unpack;

result+=ucrxmsgdata[1];

result+=(ucrxmsgdata[2]<<8);

result+=(ucrxmsgdata[3]<<16);

result+=(ucrxmsgdata[4]<<24);

}

ucrxmsgdata[1]到ucrxmsgdata[4]都是乙個位元組的數。這裡是32位。但是我想得到由data4 data3 data2 data1這樣的乙個數。這樣就可以吧data4 3 2 1 依次左移操作再相加就可以了。仔細體會一下。

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語言 左移 右移 邏輯右移 算數右移

左移 丟棄最高位,往左移位,右邊空出來的位置補0 右移 右移有邏輯右移和算數右移 邏輯右移 丟棄最低位,向右移位,左邊空出來的位置補0 算數右移 丟棄最低位,向右移位,左邊空出來的位置補原來的符號位 即補最高位 int a 1 unsigned int b a 31 31 整型a 0000 0000...

c語言負數左移右移 C語言中關於迴圈左移和迴圈右移

昨天在解答同學的問題中,又接觸了好久沒碰的c中的位操作。在重接觸的過程中,又理解了一遍計算機儲存資料的細節,於是分享給大家看一下。讓我們先看一下題目 編寫乙個程式,輸入兩個整數i j,如果j的值大於0,則將i迴圈左移j位 如果j的值小於0,則將i迴圈右移j位,最後輸出i的值。輸入輸出格式要求 輸入格...