邏輯右移和算術右移

2021-06-05 05:45:38 字數 380 閱讀 9357

【問題描述】在寫嵌入式的程式中,常會將資料定義為unsigned int,這樣定義有什麼好處呢?下面從邏輯右移和算術右移的角度進行分析。

【分析】

1 邏輯右移和算術右移

邏輯右移,移走的位填充為0;算術右移,移走的位填充與符號位有關,例如如果為負數,則移走的位填充為1。

2 unsigned int 和 int

c語言的標準指出,無符號數執行的所有移位操作都是邏輯的,而對於有符號數,採用哪種方式取決於編譯器。算術左移和邏輯左移是相同的,而算術右移和邏輯右移,取決於符號位。因此,乙個程式如果使用了有符號數,是不可移植的。嵌入式的程式通常採用交叉編譯開發,如果定義為有符號的,就無法保證右移操作能跨平台使用,這就是為什麼用unsigned int,而不用int的主要原因。

邏輯右移和算術右移

先做兩個小題先。1 unsigned char x 3 x 1是多少?x 1是多少?2 char x 3 x 1是多少?x 1是多少?3 char x 3 x 1是多少?x 1是多少?3寫成二進位制數是00000011 3寫成二進位制數是 補碼 11111101。程式執行的時候,操作的是數值的編碼表...

邏輯右移和算術右移

問題描述 在寫嵌入式的程式中,常會將資料定義為unsigned int,這樣定義有什麼好處呢?下面從邏輯右移和算術右移的角度進行分析。分析 1 邏輯右移和算術右移 邏輯右移,移走的位填充為0 算術右移,移走的位填充與符號位有關,例如如果為負數,則移走的位填充為1。2 unsigned int 和 i...

C 邏輯右移 算術右移

邏輯左移 算數左移,右邊統一添0 邏輯右移,左邊統一添0 算數右移,左邊新增的數和符號有關,左側新增符號位。即正數添0,負數添1。如果負數要進行邏輯右移,可將其轉換為unsigned型別。左移運算子 左移運算子是用來將乙個數的各二進位制位左移若干位,移動的位數由右運算元指定 右運算元必須是非負值 其...