<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                > Javascript 按位取反運算符 (~) ,對一個表達式執行位非(求非)運算。如 ~1 = -2 ; ~2 = -3 ; ~99 = -100 `result = ~ 【數字】` 所有一元運算符(如 ~ 運算符)都按照下面的規則來計算表達式的值: 代碼如下: ```js 1、 如果應用于未定義的表達式或 null 表達式,則會引發一個運行時錯誤。 2、 將對象轉換為字符串。 3、 如果可能,將字符串轉換為數字。 否則,將引發運行時錯誤。 4、 布爾值被視為數字(如果為 false,則為 0;如果為 true,則為 1)。 ``` 運算符將應用于結果數字。 `~` 運算符查看表達式的二進制表示形式的值,并執行位非運算。 表達式中的任何一位為 1,則結果中的該位變為 0。 表達式中的任何一位為 0,則結果中的該位變為 1。 下面的示例闡釋了位非 (~) 運算符的用法,其中包含二進制表示十進制負數的,如果不熟悉這個請先看懂*《十進制負數轉換為二進制、八進制、十六進制》*。 ```javascript 代碼如下: var temp = ~5; /* 5 二進制 101,補滿 32位 00000000000000000000000000000101 按位取反 11111111111111111111111111111010 由于32位開頭第一個是1,所以這是一個負數,將二進制轉換成負數,需要先反碼 00000000000000000000000000000101 之后,再+1 00000000000000000000000000000110 轉換成十進制為6,加上符號變成負數 -6 */ alert(temp); // 彈出【-6】 ``` ## 十進制負數轉換為二進制、八進制、十六進制 程序猿們或許對二進制都不陌生,二進制是計算技術中廣泛采用的一種數制。二進制數據是用0和1兩個數碼來表示的數。但是很多人都會將二進制轉換成整數,但是如何用二進制表示負數呢?有的人會說,在二進制前面加個負數符合。而計算機只能認識0 和 1,又怎么去加個額外的負數符號呢?于是我們就需要用0和1來表示負數。如果想要弄懂這個,我們需要先了解什么是二進制原碼。 ### 原碼是什么 原碼(true form)是一種計算機中對數字的二進制定點表示方法。原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:+0和-0),其余位表示數值的大小。 簡單直觀;例如,我們用8位二進制表示一個數,+11的原碼為`00001011`,-11的原碼就是10001011 原碼不能直接參加運算,可能會出錯。例如數學上,`1+(-1)=0`,而在二進制中`00000001 + 10000001 = 10000010`,換算成十進制為-2。顯然出錯了。 ![](https://box.kancloud.cn/6ecfb8d35f486172c672f12319a1c862_241x377.png) ### 二進制原碼、補碼和反碼 十進制如何轉換成二進制 我們如何把十進制的-3,轉換成二進制表示呢?首先我們將 -3 的絕對值 +3 轉換成二進制,假設是為int類型(32位)的,那么二進制表示為: `0000 0000 0000 0000 0000 0000 0000 0011` #### 負數轉換成二進制分為3步: **1、** 首先將負數轉換為對應的原碼 -3 的原碼為(也就是+3轉換成二進制后的字符串): `0000 0000 0000 0000 0000 0000 0000 0011` **2、** 再將原碼的每一位做取反操作得到反碼。 取反操作:0變為1 、 1變為0;取反后的結果即為: `1111 1111 1111 1111 1111 1111 1111 1100` **3、** 將反碼+1得到補碼 `1111 1111 1111 1111 1111 1111 1111 1101` 現在用Windows自帶的計算器來驗證一下,Win+R 輸入calc,將計算器改為程序員,選擇雙字(4字節,32位) ![](https://box.kancloud.cn/60aaf4f1c2ab09080d7f410c1d5364de_427x386.png) 打開Windows自帶的計算器科學計算功能 **在計算器中選擇十進制,之后輸入 -3** : ![](https://box.kancloud.cn/d590d90a5d6d9fdf58fb8fcdc639ab36_427x386.png) 再點擊二進制轉換,將十進制下的-3轉換成二進制: ![](https://box.kancloud.cn/9638247e9526b422a917627749bab909_427x386.png) ### 二進制轉十進制負數問題 正常情況下,轉換二進制到十進制都是沒有任何問題的。而在類似 Javascript / PHP 等整數類型中,一般 int /integer 都有位數限制,一般都是32位長度。也就預示著,這些語言中,整數是有最大值的,而32位最大整數極限為:2147483647,也就是二進制: `01111111111111111111111111111111` 那么就很容易理解,32位二進制,第一位數為0的時候,就表示這個是一個正數,而如果是1,那么就表示這個是負數。 32位二進制 `11111111111111111111111111111001` 十進制值是什么? `11111111111111111111111111111001` 如上,二進制長度為32位,也就是這個整數是一個負數,先取反,得到反碼: `00000000000000000000000000000110` 反碼+1,得到: `00000000000000000000000000000111` 轉換成十進制:7 由于是負數,所以加個負號,轉換成 -7 **趣味:32位二進制 1111111111111111111111111111001 十進制值是什么?** 這個是個比較有趣的,千萬不要誤導為上面這是一個負數,其實這個是個整數,因為這里只有31位,需要在前面加0,補足32位,變成: `01111111111111111111111111111001` ### 十進制負數轉八進制、十六進制 負數轉換成八進制、十六進制,只需在補碼(二進制)的基礎上,3位合成一位計算,或者4位合成一位計算 -3的轉換成二進制為: `1111 1111 1111 1111 1111 1111 1111 1101` 八進制則將-3的二進制從右至左每3位為一個單元,不夠三位用0補 即: `011 111 111 111 111 111 111 111 111 111 101` 計算每一個單元,結果為:`37777777775` 十六進制則將-3的二進制從右至左每4位合并為一個單元,即: `1111 1111 1111 1111 1111 1111 1111 1101` 計算后為: `FFFFFFFD` ![](https://box.kancloud.cn/666265b432c4e678aca273144434598f_427x386.png)
                  <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>

                              哎呀哎呀视频在线观看