char,byte,short位移運算時注意事項

2021-08-24 21:12:13 字數 400 閱讀 9037

對char,byte或者short進行移位處理,那麼在移位進行之前,它們會自動轉換成乙個int。只有右側的5個低位才會有用。這樣可防止我們在乙個int數里移動不切實際的位數。若對乙個long值進行處理,最後得到的結果也是long。此時只會用到右側的6個低位,防止移動超過long值裡現成的位數。

對char,byte或者short進行移位處理,那麼在移位進行之前,它們會自動轉換成乙個int。

比如 byte bt=128;則在進行位移運算前首先會把bt轉換為int型別,即剛開始時:01000000,如果要進行bt<<8運算時,則首先bt會轉換為2進製 00000000000000000000000010000000

然後向左移動8位。        結果為 00000000000000001000000000000000值為32768

iOS 位移列舉

之前,我們一般都採用c語言的方式定義列舉,這種列舉可以稱為普通的列舉。typedef enum directiontype 但是我們在檢視蘋果的sdk或者看一些第三方庫時會像下面這樣定義列舉。比如sdwebimage 中這樣定義列舉,這稱為位移列舉。下面我結合實際應用,說明一下 位移列舉 impor...

教你理解位移

乙個很簡單問題 用什麼方式計算2 8最高效?沒錯答案,就是2 3,你肯定也是知道答案的。但為什麼是2 3不是2 2也不是2 4呢?估計有不少人就發懵了。以下就來講解一下位運算中的左移右移。先看一下在10進製中對數字進行左右移操作 目標數字 1 左移1位 10 左移2位 100 右移1位 0.1 右移...

C 位移運算

隨筆 218 文章 1 一 和 運算子用於執行移位運算,分別稱為左移位運算子和右移位運算子。對於x n形式的運算,含義是將x向左或向右移動n位,得到的結果的型別與x相同。此處,x的型別只能是int,uint long或ulong,n的型別只能是int,n的型別只能是int,或者顯示轉換為這些型別之一...