# 簡答1
## 0與1
Java中定義的基本類型
### 原碼、反碼、補碼
我們已經知道了一個 int 型數值是 4 個字節。每個字節有 8 位。但對于一個 int 或者其它整數類型如 (long)的數值而言還要注意的是,它的最高位是符號位。
* 最高位為0表示正數。
* 最高位為1表示負數
#### 原碼
將一個數字轉換成二進制,就是這個數值的原碼
```java
int a = 5; //原碼 0000 0000 0000 0101
int b = -3; //原碼 1000 0000 0000 0011
```
#### 反碼
分兩種情況:正數和負數
* 正數 正數的反碼就是原碼。
* 負數 負數的反碼是在原碼的基礎上,符號位不變 其它位都取反。
```java
5 的原碼:0000 0000 0000 0101
-3 的原碼:1000 0000 0000 0011
-3 的反碼:1111 1111 1111 1100
```
#### 補碼
仍然分正數和負數兩種情況
* 正數 正數的補碼就是原碼。
* 負數 負數的補碼在反碼的基礎上加1。
```java
5 的補碼:0000 0000 0000 0101
-3 的反碼:1111 1111 1111 1100
-3 的補碼: 1111 1111 1111 1101
```
**計算機在進行數值運算的時候,是通過補碼表示每個數值的。**
```bash
5 - 3 = 5 + ( -3 )
相當于
0000 0000 0000 0101
+ 1111 1111 1111 1101
= 1 0000 0000 0000 0010
```

### 位運算符號
位運算符包含與運算符(&)、或運算符(|)、取反運算符(~)、異或運算符(^)、左移運算符(>>)和右移運算符(<<)。
> 需要注意的是,下面測試用的數據都是 int 類型,int 類型是 4 個字節長度,但是為了方便說明示例中用的數值我都用 1 個字節表示。希望不會給大家造成困擾。
#### & 與
規則:**都為1,則1,否則為0**.
```java
0 & 0 = 0,
0 & 1 = 0,
1 & 1 = 1
```
#### | 或
規則:**都為0,則0,否則為1**.
```java
0 | 0 = 0,
0 | 1 = 1,
1 | 1 = 1
```
#### ~ 取反
規則:**對每一位取反, 1變成 0,0 變成 1**.
```java
~5 => 0000 0101 ~ => 1111 1010
```
#### ^ 異或
規則:**每一位上,如果數值相同為0,不同為1**.
```java
1 ^ 0 = 1,
1 ^ 1 = 0,
0 ^ 0 = 0;
```
#### << 左移
規則 **a << b 將數值 a 的二進制數值從 0 位算起到第 b - 1 位,整體向左方向移動 b 位,符號位不變,低位空出來的位補數值 0**。
```java
5 << 1 ===> 1000 0000 0000 0101 << 1 = 1000 0000 0000 1010 = 10
```
#### >> 右移
規則:**a >> b 將數值 a 的二進制數值從 0 位算起到第 b - 1 位,整體向右方向移動 b 位,符號位不變,高位空出來的位補數值 0**。
```java
5 >> 1 ===> 1000 0000 0000 0101 >> 1 = 1000 0000 0000 0010 = 2
```
也就是說 a >> b = a / ( 2 ^ b )
#### >>> 無符號位右移
連同符號位,一起右移
### 科學計數法
- 計算機基礎
- 簡答1
- 簡答2
- 專案
- 淺談0與1
- 淺談TCP_IP
- 淺談HTTP
- 淺談HTTPS
- 數據結構與算法
- 常見數據結構簡介
- 常用算法分析
- 常見排序算法
- Java數據結構類問題簡答
- 專案
- HashMap
- 淺談二叉樹
- 算法題
- 算法001_TopN問題
- 算法002_漢諾塔
- 編程思想
- 雜說
- 觀點_優秀程序設計的18大原則
- 設計模式_創建型
- 1_
- 2_
- 設計模式_結構型
- 1_
- 2_
- 設計模式_行為型
- 1_
- 2_
- Java相關
- 簡答1
- 簡答2
- 專案
- 淺談String
- 淺談Java泛型
- 淺談Java異常
- 淺談動態代理
- 淺談AOP編程
- 淺談ThreadLocal
- 淺談Volatile
- 淺談內存模型
- 淺談類加載
- 專案_數據結構
- 淺談SpareArray
- Android相關
- Android面試題
- 專案
- 推送原理解析
- Lint
- 自定義Lint
- Lint使用
- 優化案
- Apk體積優化
- Kotlin相關
- 簡答1
- 簡答2
- 三方框架相
- Okhttp3源碼分析
- ButterKnife源碼分析
- Glide4源碼分析
- Retrofit源碼分析
- RxJava源碼分析
- ARouter源碼分析
- LeakCanary源碼分析
- WMRouter源碼分析
- 跨平臺相關
- ReactNative
- Flutter
- Hybrid
- 優質源
- 資訊源
- 組件源
- 推薦