二進制運算-十進制與二進制的轉換
在學習JDK源碼和JAVA一些開源架構源碼的時候經常會碰到位運算,要搞懂位運算就得弄明白二進制和十進制之間的轉換
一、十進制轉換成二進制
1.正整數轉換成二進制
十進制整數轉換成二進制就是不停的除以二,直到不足二為止(0或者1),然後記錄餘數,從下往上排列出來就是二進制的值
舉個例子:5和8轉換成二進制
5的二進制為101,8的二進制為1000
2.負整數轉換成二進制
負整數轉換成二進制,首先取得它絕對值的正數的二進制,然後取反(0變1,1變0),然後加1
舉個例子:-5的二進制(32位計算機中)
第一步:5的二進制101,高位補0之後32位計算機中就是:0000 0000 0000 0000 0000 0000 0000 0101
第二步:取反,1111 1111 1111 1111 1111 1111 1111 1010 (反碼)
第三步:加一,1111 1111 1111 1111 1111 1111 1111 1011 (補碼)
如果你使用的是windows系統可以拿去驗證,比如我是64位系統 -5的二進制是1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1011
3.小數轉換成二進制
首先把整數部分轉換成二進制,然後把小數位轉換(小數為換算每次乘2,不足1為0),最後相加
舉個例子:3.15的二進制
第一步:3的二進制11
第二步:0.15的二進制0.001,如圖
第三步:相加得11.001
一、二進制轉換成十進制
1.二進制轉換成十進制整數
舉個例子:
101的十進制和 1110的十進制
2.二進制轉換成十進制負數
-5的二進制是111 1111 1111 1111 1111 1111 1111 1011,反碼是0000 0000 0000 0000 0000 0000 0000 0100,加一是0000 0000 0000 0000 0000 0000 0000 0101,十進制就是5,取相反數則是-5
3.二進制轉換成十進制整數
舉個例子:3.15的二進制是11.001