1. 程式人生 > >進制轉換與數字存儲實例

進制轉換與數字存儲實例

mage 有符號 說明 log 二進制表示 浮點數存儲 精度 規範 c語言

  說明:本實例基於C語言編寫

一、進制轉換

  1)、十進制轉其它進制

  •   DEC轉BIN:N=25

  (25)2=11001

  技術分享

  •   DEC轉OCT:N=125

  (125)8=175

  技術分享

  •   DEC轉HEX:N=2581

  (2581)16=A15

  技術分享

  2)、其它進制轉十進制

  •   BIN轉DEC:(1100101)2

  (1100101)2=1x26+1x25+0x24+0x23+1x22+0x21+1x20=64+32+0+0+4+0+1=101

  •   OCT轉DEC:(2612)8

  (2612)8=2x83+6x82+1x81+2x80=1024+384+8+2=1418

  •   HEX轉DEC:(A46C)16

  (A46C)16=10x163+4x162+6x161+12x160=40960+1024+96+12=42092

  3)、二進制與八進制互轉

  •   BIN轉OCT:(011100100110)2

  (011100100110)2=(3446)8

  技術分享

  •   OCT轉BIN:(7514)8

  (7514)8=(?111101001100?)2

  技術分享

  4)、二進制與十六進制互轉

  •   BIN轉HEX:(0101001011)2

  (0101001011)2=(14B)16

  技術分享

  •   HEX轉BIN:(B287)16

  (B287)16=(?1011001010000111?)2

  技術分享

  5)、八進制與十六進制互轉

  OCT轉HEX:OCT轉BIN轉HEX

  HEX轉OCT:HEX轉BIN轉OCT

二、數字存儲

  1)、無符號整數原碼存儲:N=126

  技術分享

  技術分享

  2)、有符號正整數原碼存儲:N=126

  參照上一個例子

  3)、有符號負整數補碼存儲:-106

  (106)2=00000000000000000000000001101010

  如果用4字節(32位來存儲)的話,(106)=11111111111111111111111110010110

  技術分享

  技術分享

  將補碼存儲的有符號負整數還原為十進制數

  •   對補碼表示的數進行補碼運算得到這個十進制數的絕對值的二進制表示:01101010
  • 將該二進制數轉換為十進制並添加符號(看最高位)即可:-10

  補碼運算

  技術分享

  4)、單精度浮點數存儲:余127碼

  N = - 12.8(精度2位)

  •   符號位S=1(負數)
  •   轉化為二進制表示:(12.8)2=(1100.1)2,轉換為二進制的小數部分精度為1
  •   規範化:(1.1001)x23
  •   指數E=3+127=130,二進制為:(130)2=(10000010)2
  •   尾數M=(10010000000000000000000)2
  •   結果:1 10000010 10010000000000000000000

  技術分享

  5)、雙精度浮點數存儲:余1023碼

  操作方法和單精度浮點數的存儲一直,不同的是,雙精度浮點數的指數E用11位存儲,尾數用52位存儲。

進制轉換與數字存儲實例