▲ 首先需要了解一些計算機的基礎(chǔ):
- 對于一個有符號的數(shù)(能表示正負),最高位就是符號位,其中0代表正數(shù)、1代表負數(shù)。
- 原碼:把一個數(shù)換算成二進制形式,就是原碼。
反碼:原碼中0變1、1變0——除符號位不變。
補碼:正數(shù)的補碼和原碼一樣的、負數(shù)的補碼等于它的反碼加1。 - 計算機底層,所有數(shù)都是以補碼形式保存。
以 Short s = 264; 舉例,Short 占16位

Short s = -264; 負數(shù)時符號位為1

▲ 位運算符:它只能對整數(shù)進行計算
- “&” 與:上下兩位都是1時,得到結(jié)果才是1。

- “|” 或:上下兩位只要有一個是1,得到結(jié)果就是1。

- “~” 非:單目運算符,原來是0就變1、原來是1就變0,符號都會變。它會改變數(shù)的正負。

- “^” 異或:上下兩位不同時,得到結(jié)果就是1、上下兩位相同時,得到結(jié)果是0。

- “<<” 左移N位:就相當(dāng)于乘以2的N次方。

- “>>” 右移N位:就相當(dāng)于除以2的N次方,如果除不盡,得到結(jié)果總是比實際除得結(jié)果略小的整數(shù)。

- “>>>” 無符號右移N位:在最高位總是補0,因此無論之前的數(shù)是什么,運算之后的結(jié)果總是正數(shù)。