反碼補碼報告

來源:互聯網
上載者:User

標籤:mil   family   有符號   ali   正數   關於   運算   數實值型別   bsp   

關於反碼補碼的知識總結

基本概念正數(定點小數、定點整數):     原碼,補碼,反碼相同; 負數(定點小數、定點整數):      反碼:保持原碼符號位不變,數值位取反      補碼:第一種方法給反碼的最低位+1就可以啦,若數值最高位有進位則丟棄(不向符號位進位)                第二種方法以原碼為基礎,符號位不變,其他從最低位開始,直到遇到第一個1之前什麼都不變,該位之前位依次按位取反,即(推薦)                     原碼: ([符號位][***][1][n*0]),其對應補碼僅需對[***]部分依次取反即可。 例如,當編碼總位元為8時有: +127的原碼、反碼、補碼都為:0 1111111 -127的原碼、反碼、補碼依次為:1 1111111、1 0000000、1 0000001 已知負數的補碼,如何擷取其十進位數?1.先對各位取反,包括符號位2.轉換為十進位數3.添加負號並減1例如:對於11111010,取反得00000101,對應十進位數為5,由第三步轉換可得到結果:-6   為何n位位元據的表示範圍是[-2^(n-1),2^(n-1)-1]?以8位二進位為例,-128=(-1)+(-127)=([1000 0001]+[1111 1111])原=([1111 1111]+[1000 0001])補=([1000 0000])補,所以在補碼運算結果中,([1000 0000])補就表示-128,這就是多出來的一位元據。符號擴充用於在數實值型別轉換時擴充二進位位的長度,以保證轉換後的數值和原數值的符號(正或負)和大小相同,一般用於較窄的類型(如byte)向較寬的類型(如int)轉換。擴充二進位位長度指的是,在原數值的二進位位左邊補齊若干個符號位(0表示正,1表示負)。Java的數實值型別轉換規則一<Java解惑>總結1.如果最初的數實值型別是有符號的,那麼就執行符號擴充;如果是char類型,那麼不管它要被轉換成什麼類型,都執行零擴充。2.如果目標類型的長度小於源類型的長度,則直接截取目標類型的長度。例如將int型轉換成byte型,直接截取int型的右邊8位。  

反碼補碼報告

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.