当前位置:   article > 正文

扩展一个数字的位表示和截断数字

截断数字

、扩展一个数字的位表示

一种常见的运算是在不同字长的整数之间转换,例如,从一个较小的数据类型转换到一个较大的数据类型。

将一个无符号数转换为一个更大的数据类型,只需要简单地在表示的开头添加 0,这种运算称为零扩展

将一个补码数字转换为更大的数据类型要执行符合扩展,规则是在表示中添加最高有效位的值的副本。如果原始的位表示为这里写图片描述,那么扩展后的位表示为这里写图片描述

下面证明符号扩展是正确的,即证明下式:

这里写图片描述

表达式的左边增加了k位这里写图片描述的副本。采用的是数学归纳法,即证明符号扩展一位保持数值不变,那符号扩展任何位都保持这种属性。

这里写图片描述

根据定义展开,

这里写图片描述

、截断数字
例如,在一台32位机上,将 int类型强制转换为short时,就会将32位的int截断为16位的,将一个w位的数这里写图片描述截断为一个k位数字时,将会丢弃高w-k位,得到一个位向量这里写图片描述,截断一个数字可能会改变一个它的值,这是溢出的一种形式。

对于一个无符号数 x,截断它到k位,相当于计算这里写图片描述,通过下式计算得到:
这里写图片描述

对于一个补码数字 x, 相似的推理可知道,

这里写图片描述,也就是,这里写图片描述 能都被位级表示为 这里写图片描述,不过,一般而言,这个被截断的数字被视为有符号的,这将得到数值 这里写图片描述

这里写图片描述

参考:深入理解计算机系统(第二版)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/272422
推荐阅读
相关标签
  

闽ICP备14008679号