进制转换与数字存储实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进制转换与数字存储实例相关的知识,希望对你有一定的参考价值。

  说明:本实例基于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位存储。

以上是关于进制转换与数字存储实例的主要内容,如果未能解决你的问题,请参考以下文章

如何将二进制整数转换为十六进制字符串?

在存储过程中将数字转换为压缩十进制

Flutter模型与json的相互转换

Flutter模型与json的相互转换

Flutter模型与json的相互转换

计算机进制转换和计算机存储单元