進制轉換

參考:java

  https://blog.csdn.net/jjj19891128/article/details/22945441(獲得小數轉換二進制)api

 

引:加密

  最多見的數字進制是十進制,咱們生活當中均有體現,如15.00 ¥ ,以0-9組成的數字序列spa

  再其次瞭解的進制是2進制,是計算技術中普遍採用的一種數制, 如: 0b0100,以0-1組成的數字序列,前面以0b或者0B開頭,用來與10進制區分.net

  再其次熟悉的進制是16進制,偶爾能夠看到相似:C554D0513BBE7D39,這是我利用md5加密後獲得的16位表示字符串,計算機應用中常常用它存儲密嗎這類東西,16進制以0X開頭,後面由0-9 a-f A-F組成的數字序列,如0X5A設計

  再常見的就是8進制了,0開頭,0~7範圍內數字組成的數字序列,如:0342code

 

二進制的產生是由於早期的電子元件只能表達開關的這兩種狀態;八進制在對變量進行移位操做等比較底層的程序設計是頗有用的而且8進制是用於ACSIC碼的;十六進制做爲計算機領域一種重要的數制,對計算機理論的描述,計算機硬件電路的設計都是頗有益的。好比邏輯電路設計中,即要考慮功能的完備,好要考慮用盡量少的硬件,十六進制就能起到一些理論分析的做用。好比四位二進制電路,最多就是十六種狀態,也就是一種十六進制形式,只有這十六種狀態都被用上了或者儘量多的被用上,硬件資源才發揮了儘量大的做用。
引:https://blog.csdn.net/weixin_38701432/article/details/79474277

blog

 

什麼是進制呢?md5

  

 

 

 進制轉換:進制轉換:資源

0100100 2進制轉十進制: 0*2^0 + 0*2^1 + 1*2^2 + 0*2^3 + 0*2^4 + 1*2^5 = 4 + 32 = 36 2進制轉8進制: 000(8^2)+ 100(8^1) + 100 (8^0) = 0 * 64 + 4*8 + 4*1 = 36 = 044  8進制以0開頭,原理利用2^3=8 2進制轉16進制: 0010(16^1) + 0100(16^0) = 2*16 + 4 = 36 = 0x24 原理利用2^4=16 16進制轉2進制: 0x24
    0010 0100 將每一個數字分別轉2進制便可,4位表示 8進制轉2進制: 044
    100 100 將每一個數字分別轉2進制便可,3位表示 10進制轉2進制:36
    2 36 0
    2 13 1
    2  6 0
    2  3 0
    2  1 1
  2 0 1

10進制數依次除以2,直到商爲0,從下往上將全部餘數相粘合, 獲得:
110010
若是有正負號,正負號保留, 若是有小數點,小數點也保留(這一句話怎麼說呢?能夠說有歧義也能夠說沒有,此文章後面補充出去) 

小數點後的轉二進制與整數轉二進制有些不一樣,由於要把數轉換成2
^n + 2^m + 2^b ...累加的形式,而2^0就是1,因此n這些必定是負整數, 2^-1 = 1/2.... ,轉二進制的方式就是 不斷 * 2, 獲得值<1計爲0,>1計爲1,大於1後應使用該值-1進行後面的計算,最後轉換成爲1.xx * 2 ^n次方的形式 0.25轉二進制 0.25 * 2 0.5 0 0.5 * 2 1.0 1 0 * 2 0 0 ... 獲得0.010,獲得1.0 * 2^-2

  5.2轉2進制
  整數部分轉二進制與小數部分轉二進制相粘合
   5轉2進制:101
0.2的二進制:0011001100110011001100110011 無限循環
粘合: 101. 00110011 00110011 00110
  計數法表示:1.010011001100110011 * 2^2

其餘進制轉換能夠以2進製爲媒介中轉,數額太大可以使用計算器或者api達到效果

 

本身思考而且驗證過的朋友能夠發現,咱們使用java程序輸出數據的二進制形式,寫個demo進行驗證:

public class TestByte {
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(13));
System.err.println(Long.toBinaryString(Double.doubleToLongBits(13.2)));
System.out.println(Integer.toBinaryString(-13));
}
}

輸出結果爲:

 

 發現輸出的與咱們所寫的不太一致。

緣由有以下幾個:

  一、程序輸出的二進制是數據的二進制存儲結構,也就是補碼形式

  二、java程序輸出的二進制形式默認捨去了前面的0

  三、浮點數的存儲和整數的存儲不一樣,存儲大體是 符號位 + 偏移指數 + 分數構成而不是咱們運算的整數 + . + 小數構成。

相關文章
相關標籤/搜索