十進制和二進制之間的相互轉化


/*
 * 
 * 每一個位上對應的數字
 * ……    10        9        8        7        6    5    4    3    2    1    0    分別表示2的N次方
 * ……    1024    512        256        128        64    32    16    8    4    2    1
 * 
 * 二進制轉十進制
 * 100100001
 * 1    0    0    1    0    0    0    0    1
 * 256    0    0    32    0    0    0    0    1
 * 100100001=256+32+1=289 為零則表示該位上沒有數字 ,個位數是1該數一定是基數.例如100100000則等於256+32=288    
 * 
 * 
 * 十進制轉二進制 
 * 1659
 * 
 * 1659對應的是1024,在第11位,第11位則為1,然后用1659-1024=635
 * 635對應的是512,在第10位,第10位則為1,然后用635-512=123
 * 123對應的是64,則第9,8位為0,第7位為1,然后用123-64=59
 * 59對應的是32,則第6位數字為1,然后用59-32=27
 * 27對應的是16,則第5位數字為1,然后用27-16=11
 * 11對應的是8,則第4位數字為1,然后用11-8=3
 * 3對應的是2,第3位為0,第2位則為1,然后用3-2=1
 * 1對應的是1,則第1位數字則為1
 * 最終結果是:1    1 0 0 1 1 1 1 0 1 1
 * 
 * 
 * 
 * 負十進制數轉二進制
 * java中int 是4個字節,所以高位需要補0,占夠32位(例如6的二進制0110實際是00000000 00000000 00000000 00000110),最高位存放符號(0為正,1為負).
 * -659
 * 1.先將計算出659的二進制數據:00000000 00000000 000000001 010010011
 * 2.然后將計算出的二進制取反:  11111111 11111111 111111110 101101100
 * 3.然后最后一位補碼,在最后一位+1:11111111 11111111 111111110 101101101(二進制逢二進一:例如二進制101+1=110)
 * -658的二進制
 * 11111111 11111111 111111110 101101110
 * 
 * 負二進制數轉二進制
 * 11111111 11111111 111111110 101101110
 * 1.取反 00000000 00000000 000000001 010010001
 * 2.+1  00000000 00000000 000000001 010010010
 * 3.十進制換算成二進制,然后加上負號
 */

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM