首页 » IT » 浮点数

数的分类

数的常见分类:

  • 整数。分为自然数(正整数)、负整数。
  • 有理数。可用两个整数的比值表示的一类数,也成为分数。有些有理数难以用小数表示,例如1/3、1/7。
  • 无理数。不能表示为两个整数之比,小数部分是无穷的,毫无规律,没有循环,如2(x2 - 2 = 0的解)。
  • 超越数。不是任何以整数为系数的代数方程的解的数,如e( (1+1/n)n)。
  • 虚数。负数的平方根。

有理数和无理数构成实数。实数和虚数构成复数。

二进制数

用二进制数来表示整数:

位数(bits)正整数的范围整数范围
80 ~ 28-27 ~ 27-1
160 ~ 216-215 ~ 215-1
320 ~ 232-231 ~ 231-1

用二进制数来表示单精度浮点数(IEEE 754):

s = 1bit 符号位e = 8bit 指数位f = 23bit 有效位

计算公式

(-1)s * 1.f * 2e-127

用二进制数来表示双精度浮点数(IEEE 754):

s = 1bit 符号位e = 11bit 指数位f = 52bit 有效位

计算公式

(-1)s * 1.f * 2e-1023

二进制数解说

我们通常把数字视作连续的(Continuous),任意给出两个有理数,都可以找到位于他们之间的数(求平均值即可)。但二进制中,每1bit非0即1,中间没有任何数,这一特点决定了计算机只能处理离散(Discrete)数据,而二进制的位数决定了能够表示的离散数值的个数。

BCD码。BCD(Binary Coded Decimal)码以二进制表示十进制。0~9的每一个数字都需要用4位来表示。例如5表示0101,9表示为1001。BCD编码在程序处理美元和美分表示的钱款、帐户时很有用(银行和保险公司)。通常把2个BCD码放在一个字节(1Byte)中,称为压缩BCD(packed BCD)。如果要表示负数,需要多用4bit或8bit的存储空间。

例如银行要存储+/-100w$的账户,要求数值的表示范围从-9,999,999.99~99,999,999.99,则我们可以用5Byte的BCD编码来存储(4bit存储符号,剩下的4bit+4Byte存储数值)。例如-3,725,120.25可表示为:

00010011 01110010 01010001 00100000 00100101        # BCD编码表示
13H 72H 51H 20H 25H                                 # 16进制表示

分享

0