定点数表示方法——原码,补码,反码,移码

1. 真值和机器数

    真值:数的实际值,用正负号和绝对值的某进制形式来表示,如+1010,-12,-FFFF等.

    机器数:真值在计算机中的二进制表示,特点是符号数字化且数的大小受机器字长限制,其表示形式有原码,补码,反码,移码等.

2. 原码.

    1). 定点小数:

x[]={x,0x<120x=20+|x|,1<x0

    (其中x[原]是机器数,x是真值,最高位为符号位,下同.)

    表示范围:

max=12n,min=(12n)

    (n是指x除符号位的位数,下同)

    如: x=+0.1011, x[原]=0.1011

    x=-0.1011, x[原]=1.1011

    2). 定点整数:

x[]={x,0x<2n2nx=2n+|x|,2n<x0

    表示范围:

max=2n1,min=(2n1)

    如:x=+1011,x[原]=01011

        x=-1011,x[原]=11011

    3). 特点:

    原码实质上为符号位加上数的绝对值,0正1负;

    原码零有两个编码,+0和 -0编码不同,表示不唯一;

    原码加减运算复杂,乘除运算规则简单;

    原码表示简单,易于同真值之间进行转换.

3. 补码

    1). 定点小数:

x[]={x,0x<12+x=2|x|,1x0(mod2)

    表示范围:

max=12n,min=1

    如:x=+0.1011,  x[补]=0.1011

        x=-0.1011, x[补]=10+x=10.0000-0.1011=1.0101

    2). 定点整数:

x[]={x,0x<2n,0x<2n2n+1+x=2n+1|x|,2nx0(mod2n+1)

     表示范围:

max=2n1,min=2n

    如:x=+1011,x[补]=01011

        x=-1011, x[补]=2^5 – |-1011|=100000 – 1011=10101

    3). 特点

    负数补码实质上为原码除符号位按位取反再加1

    补码最高一位为符号位,0正1负;

    补码零有唯一编码;

    补码能很好用于加减运算;

    补码满足x[补]+(-x)[补]=0;

    补码最大的优点在于能够将减法运算转换成加法运算,其中符号位参与运算,它满足:

(x+y)[]=x[]+y[](xy)[]=x[]+(y)[]

    例如:

x=11[10]=1011[2],y=5[10]=0101[2],(xy)[]=x[]+(y)[]=01011+11011=100110()=00110=6[10]=xy

    4). 补码和原码转换.

    正数:x[补]=x[原]

    负数:按位取反,末位加1(符号位除外)

    如:x= -1001001, x[原]=11001001,x[补]=10110110+1=10110111

    5). 补码和真值的转换

{=0,=1,

4. 反码

    1). 定点小数

x[]={x,0x<1(22n)+x=2+x2n,1<x0

    范围:

max=12n,min=(12n)

    如:x=0.1011,x[反]=0.1011

        x=-0.1011,x[反]=1.0100

    2). 定点整数

x[]={x,0x<2n(2n+11)+x=2n+1+x1,2n<x0

    范围:

max=2n1,min=(2n1)

    如:x=1011,x[反]=01011

        x=-1011,x[反]=10100

    3). 特点

   负数反码实质上为原码除符号按位求反,也就是补码-1;

   反码零有两个编码,+0 和 -0 的编码不同;

   反码难以用于加减运算;

   反码的表示范围与原码相同.

5. 移码:用于表示浮点数的阶码

    1). 定义

x[]=2n+x,2nx<2n

   范围:

max=2n+11,min=0

    如:x=+1011,x[移]=11011

        x=-1011,x[移]=00101

    2). 特点

    移码中符号位表示的规律与原码,补码,反码相反——"1"正"0"负;

    移码为全0时所对应的真值最小,为全1时所对应的真值最大,移码的大小直观地反映了真值的大小,这有助于两个浮点数进行大小比较;

    真值0在移码中的表示形式是唯一的;

    移码把真值映射到一个正数域,所以可将移码视为无符号数,直接按无符号数规则比较大小;

    同一数值的移码和补码除最高位相反外,其他各位相同.

    3). 移码和补码转换

x[]={x,0x<2n2n+1+x,2nx0x[]=2n+x,2nx<2nx[]={x[]+2n,0x<2nx[]+2n2n+1=x[]2n,2nx0

posted @   Reasno  阅读(14231)  评论(3编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示