补码与无符号编码之间的转换

       一个数据x假设它在计算机里按照二进制规则存储有w位(这里我们不考虑是有符号的还是没有符号的数据,这个问题由下面的陈述来说明),那么它的位表示为:\vec{x}=\left [x _{w-1} ,x _{w-2},\cdots ,x _{1},x _{0}\right ]这里我们把x的位表示看成向量。我们书写的x的位表示并没有考虑计算机使用的端法(大端法、小端法、双端法),其实这些你都不用考虑,因为不管你怎么书写自己的表达式计算机都会用相应的储存方式来存储,所以根本不会影响我们。

其实在计算机里一个值的数据类型转换的实质是:它们在计算机里的二进制编码不变,但是这个二进制编码不再使用原来的计算方式而是使用的是新的数据类型的计算方式。在计算机网络里我们通常将这样的计算方式叫协议

        介绍几个函数代表的意义:B2U_{w}(x)\rightarrow它是由(Binary to Unsigned)缩写的,代表的意思是二进制转无符号数;

它的计算原理:B2U_{w}(x)=\sum_{i=0}^{w-1}{x_{i}}2^{i}

         B2T_{w}(x)\rightarrow它是由Binary to two's complement 缩写的,意思是二进制转补码;

它的计算原理:B2T_{w}(x)=-x_{w-1}\cdot 2^{w-1}\sum_{i=0}^{w-2}x_{i}2^{i}

        从上面的各自计算原理中可以看出B2U_{w}(x)的最小值为0,最大值UMax_{w}=2^{w}-1,

        B2T_{w}(x)的最小值TMin_{w}=-2^{w-1},最大值TMax_{w}=2^{w-1}-1

        那么我们可以得出结论:|TMin_{w}|=2TMax_{w}+1

        我们上面假设的数据x为有符号的数据,那么现在我们可以把x转换为无符号数据,计算原理如下:

                首先x的二进制补码给表示出来:\vec{x}=\left [x _{w-1} ,x _{w-2},\cdots ,x _{1},x _{0}\right ]

                令未知数C,C=\sum_{i=0}^{w-2}x_{i}\cdot 2^{i},

                 \because x=-x_{w-1}\cdot 2^{w-1}+C

                 \therefore C=x+x_{w-1}\cdot2^{w-1}

                 x的无符号求值为:

                 \because x^{'}=x_{w-1}\cdot 2^{w-1}+\sum_{i=0}^{w-2}x_{i}\cdot 2^{i}

                 \therefore x^{'}=x_{w-1}\cdot 2^{w-1}+C

                 带入C得出:

                  x^{'}=x+x_{w-1}\cdot 2^{w}

                  \therefore x^{'}=\left\{\begin{matrix} x & & & & & & & & &x\geq 0 \\ x+2^{w}& & & & & & & & & x<0 \end{matrix}\right.

        x^{'}为最终求得的有符号转换为无符号的结果

        记作T2U_{w}(x)\doteq x^{'}这里的T2U_{w}(x)就是一个函数表示的是补码转无符号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值