当前位置:神舟问>百科知识>什么是定点数?

什么是定点数?

2023-11-09 10:40:16 编辑:join 浏览量:612

什么是定点数?

[编辑本段]定点数

【dìngdiǎnshù】

计算机中采用的一夫京种数的表示方法。参与运算的数的小数点位置固定不变。

[编辑本段]1定点数的表示

[编辑本段]1.1无符号数的表示

指整个机器字长的全部二进制位均谓田钱正油表示数值位,相当于数的绝对值。若机器字长为n+1为,则数值表示为:

X=X0X1X2...Xn其中Xi城式乎良黄极故害孔银现={0,1},0<=i<=衣谓调境宁眼列员法n即X0*2^n+X1*2^(n-1)+X2*2^(n-2)+...+Xn-1*2+Xn

数值范围是0≤X观井硫之曲节保≤2^(n+1)-1

例如:1111表示15。

[编辑本段]1.2带符号数的表似承概味笔示

最高位被用来表示符号位,而态独不再表示数值位。

[编360问答辑本段](1)定点整数

小数点位固定在最后一位之后称为定点整数。若机器字长为n+1为,数值表示为:

X=X0X1X2...Xn,其河元掉眼中Xi={0,1},0≤i≤n即(-1)^X0*(X1*2^(n-1)+X2*2^(n-2)+...+Xn-1*2+Xn)

数值范围段天席营陈顾是-(2^n-1绍钟因错垂查诉表脸)≤0≤2^n-1

例如:1111表示-7音互势为阳述哪。

[编辑本段](2)定夜代省止沉笑问质点小数

小数点固定轻较矿在最高位之后称为定点小数。若机器字长为n+1为,数值表讨右论尔岩陆问调示为:

X=X0.X1X2...Xn,其中Xi=其护动{0,1},0≤i≤n(这里X0不表示数字,只表示符号,若X0=0,则代表X=0.X1X2...Xn面血阳称亮座将密温,X0=1,则代表-0.X1X2...Xn)。

即(-1)^X0*(X1*2^(-1))+X2*2^(-2)+...胡根杆边含千给+Xn-1*2^(-n+1)+Xn*2^(-n)

数值范围是-(1-2^(-n))≤X≤1-2^(-n)

例如:1111表示-0.875

(定点小数也被用在浮点数的尾数(Mantissa)部分)

[编辑本段](3)原码表示

原码是用机器数的最高一位代表符号,以下给位给出数值绝对值的表示方法。其定义为:

整数:

[X]原=X(0≤x<2^n)

[X]原=2^n-X(-2^n<X≤0)

小数:

[X]原=X(0≤X<1)

[X]原=1-X(-1<X≤0)

这里X是数的实际值(真值),[X]原为原码表示的机器数。

例如:真值X=+1001,[X]原=01001;真值X=-1001,[X]原=10000-(-1001)=11001;真值X=-0.1001,[X]原=1-(-0.1001)=1.1001。

原码的性质:

1.符号位+数的绝对值。

2.0有两个编码。

3.加减运算规则复杂,乘除运算规则简单。

4.表示简单,易于和真值之间进行转换。

原码的运算:

加法:

先判断符号位,若相同,绝对值相加,结果符号位不变;若不同,绝对值大的数减去绝对值小的数,符号位和绝对值大的数相同。

[X]原=00010,[Y]原=01010,X+Y=00000+1010+0010=01100;[X]原=10010,[Y]原=01010,X+Y=00000+1010-10=01000。

减法:

将减数符号取反,然后将被减数和符号取反的减数相加。

[X]原=10010,[Y]原=01010,X-Y=10010+11010=10000+0010+1010=11100。

乘法(原码一位乘):

是模拟竖式手算的方法。引入一个值为部分积(初值为0)。符号位是被乘数和乘数符号位的异或值。之后检视乘数(符号位以外)从低向高的每一位,若为1,部分积(对齐最高位)加被乘数(符号位以外),并右移一位;若为0,部分积加0,右移一位。

例如:[X]原=11101,[Y]原=01011。X*Y:符号位S=1⊕0=1

则X*Y=110001111。

除法(交替加减法):符号位为被除数和除数符号位异或获得。之后被除数减除数(补码表示),当余数为正时,商“1”,余数左移一位减除数;当余数为负时,商“0”,余数左移一位,加除数。

例如:[X]原=0.1001,[Y]补=0.1011,X/Y:

除法

余数r0<0,商0

商0,r和q左移一位

加y

余数r1>0,商1

商1,r和q左移一位

减y

余数r2>0,商1

商1,r和q左移一位

减y

余数r3<0,商0

商0,r和q左移一位

加y

余数r4>0,商1

X/Y的商[Q]原=0.1101,余数[R]原=0.0001。

[编辑本段](4)补码表示

补码定义为:

整数:

[X]补=X(0≤X<2^n)

[x]补=2^(n+1)+X(-2^n<X≤0mod2^(n+1)(意味相对与2^(n+1)做补))

小数:

[X]补=X(0≤X<1)

[x]补=2+X(-1<X≤0mod2(意味相对与2做补))

例如:真值X=+1001,[X]补=01001;真值X=-1001,[X]补=100000+(-1001)=100000-1001=10111;真值X=-0.1001,[X]补=2+(-0.1001)=10-0.1001=1.0111。

补码的性质:

1.机器数和真值的关系为:[X]补=2*符号位+X

2.[X]补和真值的关系:X=[X]补-2*X0=X0.X1X2...Xn-2*X0=-X0+0.X1X2...Xn

3.0有唯一的编码。

4.两数补码加法,把符号位和数值位等同处理,结果的符号位与数值位都正确。

5.补码数的算数移位

把[X]补的符号位和数值位一起右移一位并保持原符号位的值不变,可用来实现除法功能(除以2)。

变形补码,又称模4补码,把普通补码由模2改为模4,其中双符号位00代表正,11代表负,01上溢,10下溢。

[编辑本段](5)反码表示

反码是用机器数的最高位代表符号,数值位是对负数各位取反的表示方法,定义为:

整数:

[X]反=X(0≤X<2^n)

[X]反=(2^(n+1)-1)+X(-2^n<X≤0mod(2^(n+1)-1))

小数:

[X]反=X(0≤X<1)

[X]反=(2-2^(-n))+X(-1<X≤0mod(2-2^(-n)))

例如:真值X=+1001,[X]反=01001;真值X=-1001,[X]反=10110;真值X=-0.1001,[X]反=1.0110。

反码的性质:

0有2个编码。

现在计算机中,较少使用反码。

[编辑本段](6)移码

移码定位为:

[X]移=2^n+X(-2^(-n)≤X<2^n)

当真值用补码表示时,由于符号位和数值部分一起编码,与习惯上的表示法不同,因此人们很难从补码的形式上直接判断其真值的大小。

十进制数X=31,对应的二进制数为+11111,则[X]补=011111;十进制数X=-31,对应的二进制数为-11111,则[X]补=100001,看上去好像100001>011111,其实正好相反。如果我们对每个真值加上一个2^n,X=11111加上2^5可得11111+100000=111111;X=-11111加上2^5可得-11111+100000=000001,这样就可以直接通过二进制代码比较大小。

移码的性质:

1.最高位为符号位。

2.0有唯一编码。

3.保持了数据原有的大小顺序。

4.移码只用于浮点数的阶码部分,故只用于表示整数。

[编辑本段]定点数与浮点数的比较

数值的表示范围:浮点表示法所能表示的数值范围将远远大于定点表示法。

精度:对于字长相同的定点数与浮点数来说,浮点数虽然扩大了数的表示范围,但这是以降低精度为代价的,也就是数轴上各点的排列更稀疏了。

数的运算:浮点运算要比定点运算复杂。

溢出处理:定点运算时,当运算结果超出数的表示范围,就发生溢出;而在浮点运算时,运算结果超出尾数的表示范围却并不一定溢出,只有当阶码也超出所能表示的范围时,才发生溢出。

标签:定点数

版权声明:文章由 神舟问 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.shenzhouwen.com/article/208814.html
热门文章