/* * * 每一個位上對應的數字 * …… 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.十進制換算成二進制,然后加上負號 */