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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                **1\. 機器數和真值** 二進制數有正負之分,如N1\=+0.101101,N2\=-0.101101,則N1是個正數,N2是個負數。機器不能直接把符號“+”、“-”表示出來,為了能在計算機中表示正負數,必須引入符號位,即把正負符號也用1位二進制數碼來表示。把符號位和數值位一起編碼來表示相應的數的表示方法包括:原碼、補碼、反碼、移碼等。 >[danger] 機器數:符號位也當做2進制數進行編碼的數(又稱機器碼),所以它包括... 為了便于在計算機中表示,同時又便于與實際值相區分,在此首先引入機器數和真值的概念。 **機器數**? 用二進制數“0”或“1”來表示數的符號,“0”表示正號,“1”表示負號,且把符號位置于該數的最高數值位之前(放在數的最前面),這樣表示的數稱為機器數(或稱機器碼),即把符號位和數值位一起編碼來表示的數就是機器數。 **真值**? 一 般書寫中用“+”、“-”來表示數的符號,這樣表示的數稱為真值。 例如:N1\= +0.101101,N2\= -0.101101,這是真值,表示成機器數(以原碼為例)就是\[N1\]原\= 0.101101,\[N2\]原\= 1.101101。 >[danger] 有正負號的實際值 機器數有原碼、補碼、反碼和移碼四種表示形式。下面以整數為例說明原碼、補碼、反碼和移碼的表示方法。 **2\. 原碼** >[danger] 符號位加上數值的絕對值 符號位為0表示正數,為1表示負數,數值部分用二進制數的絕對值表示的方法稱為原碼表示法,通常用\[X\]原表示X的原碼。 例如,要表示+59和-59的原碼。假設機器數的位數8位(即機器的字長為8位),最高位是符號位,其余7位是數值位,那么,+59和-59的原碼分別表示為: \[+59\]原\=00111011????????????????? \[-59\]原\=10111011 寫成一般式則為: 正數的原碼???????? \[X\]原\=X ??????????? (0<X<2n-1) 負數的原碼???????? \[X\]原\=2n-1\-X?????? (-2n-1<X<0) 注意:0的原碼有兩個值,有“正零”和“負零”之分,機器遇到這兩種情況都當作0處理。 >[danger]\[+0\]原\=00000000??????????????????? \[-0\]原\=10000000 原碼的表示方法簡單易懂,與真值轉換方便,但在進行加減法運算時,符號位不能直接參加運算,而是要分別計算符號位和數值位。當兩數相加時,如果是同號,則數值相加;如果是異號,則要進行減法運算。而在進行減法運算時,還要比較絕對值的大小,然后用大數減去小數,最后還要給運算結果選擇恰當的符號。 為了解決這些問題,人們引進了數的補碼表示法。 **3\. 補碼** >[danger] 先算出原碼 符號位不變數值部分如果是0就變1如果是1就變0,最后在加1 什么是補碼?我們先用日常生活中的實例來進行說明。假如現在時間是7點,而你的手表卻指向了9點,如何調整手表的時間?有兩種方法撥動時針,一種是順時針撥,即向前撥動10個小時;另一種是逆時針撥,即向后撥2個小時。從數學的角度可以表示為: (9+10) -12=19-12=7 或 9-2=7 可見,對鐘表來說,向前撥10個小時和向后撥2個小時的結果是一樣的,減2可以用加10來代替。這是因為鐘表是按12進位的,12就是它的“模”。對模12來說,-2與+10是“同余”的,也就是說,-2與+10對于模12來說是互為補數的。 計算機中的加法器是以2*n*為模的有模器件,因此可以引入補碼,把減法運算轉換為加法運算,以簡化運算器的設計。 補碼的定義:把某數X加上模數K,稱為以K為模的X的補碼。 \[X\]補\=K+X 因此,正數的補碼的最高位為符號“0”,數值部分為該數本身;負數的補碼的最高位為符號“1”,數值部分為用模減去該數的絕對值。 通過用模2n減去某數的絕對值的方法來求某數的補碼比較麻煩,求一個二進制數的補碼的簡便方法是:正數的補碼與其原碼相同;負數的補碼是符號位不變,數值位逐位取反(即求其反碼),然后在最低位加1。 例如,\[+59\]補\=\[+59\]原\=00111011,而\[-59\]原\=10111011,因此,\[-59\]補\= 11000100+1 = 11000101。 注意:0的補碼只有一種形式,就是n位0。 采用補碼表示法進行加減法運算,比原碼運算方便多了,符號位可以和數值位一起參加運算,而且不論數是正還是負,計算機總是做加法,減法運算可轉換為加法運算。 **4\. 反碼** 引入反碼的目的是便于求負數的補碼。 正數的反碼與原碼相同,負數的反碼是符號位不變,數值位逐位取反。 例如:\[+59\]反\=\[+59\]原\=00111011,而\[-59\]原\=10111011,因此,\[-59\]反\=11000100。 注意:0的反碼也有兩個,\[+0\]反\=00000000,\[-0\]反\=11111111 在計算機中,求一個數的反碼很容易,因此,求一個數的補碼也就易于實現。 采用補碼運算,計算機的控制線路較為簡單,所以,目前大多數計算機均采用補碼存儲、補碼運算,其運算結果仍為補碼形式。 綜上所述,在n位機中,用n位二進制數補碼表示一個帶符號的整數時,最高位為符號位,后面n-1位為數值部分。n位二進制數補碼表示的范圍為-2n-1~+2n-1\-1。例如,在8位機中,補碼表示的范圍為-128~+127。 **5)移碼** 移碼也稱為增碼或偏碼,常用于表示浮點數中的階碼。 移碼可由補碼求得,只要把補碼的符號位取反就得到了移碼。 # 機器數與原碼有區別嗎? 在計算機中表示的帶符號的二進制數稱為機器數。原碼是機器數的一種表示方式 >[danger](1)1和-1的原碼分別是多少? [+1]原?= 0000 0001 [-1]原?= 1000 0001 >[danger](2)一個字節的存儲空間存儲的數值的范圍是多少? [1111 1111 , 0111 1111] 也就是 [-127 , 127] >[danger](3)1和-1的反碼分別是多少? [+1] = [00000001]原?= [00000001]反 [-1] = [10000001]原?= [11111110]反 >[danger](4)1和-1的補碼分別是多少? [+1] = [00000001]原?= [00000001]反?= [00000001]補 [-1] = [10000001]原?= [11111110]反?= [11111111]補 >[danger](5)分別用反碼和補碼計算1-1=0,看有啥區別? 1 - 1 = 1 + (-1) = [0000 0001]原?+ [1000 0001]原= [0000 0001]反?+ [1111 1110]反?= [1111 1111]反?= [1000 0000]原?= -0 1-1 = 1 + (-1) = [0000 0001]原?+ [1000 0001]原?= \[0000 0001\]反?+ \[1111 1110\]反=[0000 0001]補?+ [1111 1111]補?= [0000 0000]補=[0000 0000]原 >[info]注意 (1)如果補碼的符號位為“0”,表示是一個正數,所以補碼就是該數的原碼。? (2)如果補碼的符號位為“1”,表示是一個負數,求原碼的操作可以是:符號位為1,其余各位取反,然后再整個數加1。 >[danger](6)已知一個補碼為11111001,計算它的原碼 因為符號位為“1”,表示是一個負數,所以該位不變,仍為? ?“1”;其余7位1111001取反后為0000110;再加1,所以是10000111(-7)。 >[danger](7)假如用16位表示十進制數-100,則它的原碼,反碼,補碼分別是多少? (-100)= [1000 0000 0110 0100]原 (-100)= [1111 1111 1001 1011]反 (-100)= [1111 1111 1001 1100]補 >[danger](8) 十六位機器碼的原碼反碼補碼怎么算 比如:用十六位機器碼1110001010000000來表示定點整數(最高位為符號位),當它是原碼時表示的十進制真值為 多少?。當它是補碼時表示的十進制真值是 多少? ;當它是反碼時表示的十進制真值是多少?。怎么算 十六位機器碼1110,0010,1000,0000 不管它是什么碼,首先都要先將它轉化為原碼再做計算! 當它是原碼時就直接轉化為十進制的! (注釋2ˇ3=8) =-(2ˇ7)+(2ˇ9)+(2ˇ13)+(2ˇ14)=-25216 -25216就是真值 ! 當它是補碼時:先將它轉化為原碼,方法就是補碼的補碼就等于原碼! 補碼:1110,0010,1000,0000 原碼:1001,1101,1000,0000 =-(2ˇ7)+(2ˇ8)+(2ˇ10)+(2ˇ11)+(2ˇ12)=-7552 -7552就是真值 當它是反碼時: 反碼:1110,0010,1000,0000 原碼:1001,1101,0111,1111 =-1+2+4+8+16+32+64+256+1024+2048+4096=-7551 -7551就是真值
                  <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>

                              哎呀哎呀视频在线观看