單片機組合語言中位元的補數

來源:互聯網
上載者:User

一 無符號數:

八位無符號數的數值範圍是0~255

例如:

255=1111 1111

1 1 1 1 1 1 1 1


0=0000 0000

0
0 0 0 0 0 0 0


二 有符號數:八位元字中的最高位為符號位,“1”表示為負數,"0"表示為正數;由於最高位被表示正數或者負數的標誌佔用,所以,原來的8位只剩下7位來代表符號數的數值,這樣一來,儲存數值的大小將受到限制。原來8位儲存無符號數的數值範圍是0~255,而7位儲存帶符號數的數值範圍變成了-128~+127例如:+127=0111 1111
0 1 1 1 1 1 1 1


例如:-127=1000 0001

1 0 0 0 0 0 0 1

三 二進位的補數-128~+127是如何來的那?在數字系統中,使用二進位表示負數時,最高位放置的是符號,而數值的大小以二進位的補數形式存放在次高位到最低位。而負數的二進位補數是這樣得到的:1.把負數的絕對值用二進位表示2.將每一位取反3.結果加1註:2、3步中符號位不變。

例如:-2
1.負數取絕對值用二進位表示為:0000 00102.取反:1111 11013.加1:1111 1110
所以就變成了我們看到的-2的二進位表示為:-2=1111 1110,而不是-2=0000 0010
即:我們看到的負數的二進位實際上是其補數的表示方式!!!
例如:-126
1.負數取絕對值用二進位表示為:0111 11102.取反:1000 00013.加1:1000 0010
所以就變成了我們看到的-126的二進位表示為:-126=1000 0010,而不是-126=1111 1110
即:我們看到的負數的二進位實際上是其補數的表示方式!!!

正數用其二進位表示即可,不用像負數那樣再進行補碼轉換!!!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.