首页 > 编程知识 正文

补码左移两位如何算,反码补码移码发展历史详解

时间:2023-05-03 14:37:50 阅读:148500 作者:1634

现在是软测试的准备阶段,今天的专业课老师说了原码、反码、补充码、移动码。 听起来有点混乱,但这些东东在软测试的时候也有关系,所以必须好好总结这两个理由。

一.首先,为什么会有原码、反码、补码、转移码答案:

计算机中为了满足四则运算的要求,规定了原码、反码、补码

为了数值间大小的相互比较和几种形式的数据记录的方便,规定了移动代码。

二、分别用公式介绍原码、反码、补码、移动码。 (注: n表示机器字长) ) ) ) ) ) ) ) ) ) ) ) ) n ) ) ) ) ) ) n ) ) ) ) ) n ) )

1、源代码定义

2、补数的定义

3、反码的定义

4 .移动代码:移动代码仅用于整数,因为它只用于表示浮点数的层代码。

(1)移位代码定义:如果是由1位符号比特和n位数值比特构成的阶码,则[X]移位=2n X -2nX 2n

例如,X=1011 [X]移位=11011编码比特“1”表示正符号

X=-1011 [X]移位=00101代码比特"0"表示负代码

)2)移动代码和补充代码关系(x )移动和(x )补充的关系是代码位彼此相反的代码,

例如,X=1011 [X]移位=11011 [X]互补=01011

X=-1011[X]移位=00101 [X]增补=10101

怎么样? 这些公式把大家搞乱了吗? 其实这几个人的大码没这么难,没关系,总结起来很容易记住

3 .从正负两个方面比较说明他们之间的转换技术。

正数(定点小数、定点整数) :

原码、补数、反码相同;

移动代码是原代码的最高有效位1就可以了。 如果数值的最高有效位有进位,则丢弃。 (不进位到符号位) )。

负数(定点小数、定点整数) :

反码:保持原来的符号位不变,将数值位取反

补数)第一种方法是对反码的最低有效位赋予1即可。 如果数值的最高有效位有进位,则丢弃(不进位到符号位) )。

第二种方法是以源代码为基础,编码比特不改变,其它从最低有效比特开始,在遇到前1之前不做任何改变,遇到前1后保留

这1,其他位逐位反转。 (我个人认为这个方法很容易使用)

)移符)与补码的符号相反,数值位可以保持不变

例如,如果编码的总位数为8,则:

127的原码、反码、补码都是0 1111111。

-127的原代码、逆代码、辅助代码是1 1111111、1000000、1 0000001的顺序。

0、-0的源代码分别为0 0000000、1 0000000,对应于真值0。

由于“编码总位数为8”的限制,真值-128不能用原代码、逆代码表示,似乎不能用上述规则来解答补码,但实际上可能的——与最高位无关,操作方法如下。

如果将128定为二进制,则为10000000,最高位为1。 只需处理舍去最高有效位后剩下的7位即可,首先取相反的1111111,加1等于10000000,最高有效位有进位时需要舍去。 也就是说,变成0,000,000,加上符号就是1,000,000,000,000。

另外,在编码总位数是4的情况下,真值X=0.101的原代码、逆代码、补数都是: 0101。

按照真值X=-0.101的原代码、反码、辅助代码的顺序为1101、1 010、1 011。

注:小数位数显示在第一位代码和第二位代码之间。

我个人觉得用这样的方法进行这4个代码的转换,相对于套用公式来说比较轻松。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。