<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 簡答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 ``` ![](http://ww1.sinaimg.cn/large/005Ogmrtly1g1v8za0wubj30ug072t8u.jpg) ### 位運算符號 位運算符包含與運算符(&)、或運算符(|)、取反運算符(~)、異或運算符(^)、左移運算符(>>)和右移運算符(<<)。 > 需要注意的是,下面測試用的數據都是 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 ) #### >>> 無符號位右移 連同符號位,一起右移 ### 科學計數法
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看