C C 中的移位操作

2021-06-14 11:16:29 字數 607 閱讀 5982

1、什麼樣的資料型別可以直接移位

char、short、int、long、unsigned char、unsigned short、unsigned int、unsigned long都可以進行移位操作,而double、float、bool、long double則不可以進行移位操作。

2、有符號資料型別的移位操作

對於char、short、int、long這些有符號的資料型別:

對負數進行左移:符號位始終為1,其他位左移

對正數進行左移:所有位左移,即 <<,可能會變成負數

對負數進行右移:取絕對值,然後右移,再取相反數

對正數進行右移:所有位右移,即 >>

3、無符號資料型別的移位操作

對於unsigned char、unsigned short、unsigned int、unsigned long這些無符號資料型別:

沒有特殊要說明的,使用<< 和 >> 操作符就ok了

結束語8086 中存在邏輯移位、算術移位,而c\c++中的移位似乎既不是邏輯移位,也不是算術移位。

比如-1,我們若對它右移1位,c的結果仍舊是-1,事實上無論右移多少位始終是-1,邏輯移位得到的結果(8位表示)應該是-128,所以這點要注意。

c c 位操作 移位運算

在px4中進場可以看到 define mask use gps 1 0 bool not using gps params.fusion mode mask use gps control status.flags.gps 所以我們需要知道這個 1 0 到底是多少,且 是啥,咋運算出來的 1 0 1...

c中的移位操作

位移位運算子是將資料看成二進位制數,對其進行向左或向右移動若干位的運算。位移位運算子分為左移和右移兩種,均為雙目運算子。第一運算物件是移位物件,第二個運算物件是所移的二進位制位數。位移位運算子的運算物件 運算規則與結果 結合性如表2 16所示。移位時,移出的位數全部丟棄,移出的空位補入的數與左移還是...

C C 移位運算

c c 移位運算 一 移位運算子及其規則 移位運算子就是在二進位制的基礎上對數字進行平移,是在補碼的基礎上進行操作的。按照平移的方向和填充數字的規則分為三種 左移 帶符號右移 無符號右移 左移運算子的規則 1 int型別數值實際移位的次數是和32的餘數,移位33次和移位1次得到的結果相同 例如int...