计算机系统知识---原反补移如何计算

前言:

   在我复习软件设计师考试的时候,在复习到各种码之间的转换的时候,感觉有必要发一篇博客总结一下所学知识

 

数码转换:

    假定机器字长为8位!!

    原码:

        正数:【+1】=0 0000001    【+127】=0 1111111 【+45】=0 0101101

        负数:【-1】= 1 0000001    【-127】= 1 1111111 【-45】=1 0101101 

        小数: 【+0.5】= 0.1000000     【-0.5】=1.1000000

    根据上述的原码换算,我们需要知道

        1.在8位字长的机器上,二进制的最高位位符号位 0 表示整数,1 表示负数

        2.正数的原码就是十进制转换为二进制而已,负数同样也是,但是符号位需要写成1

        3.小数转换的时候,需要进行乘2取整数,排序这个步骤!

 

   反码:

        正数:【+1】=0 0000001    【+127】=0 1111111 【+45】=0 0101101

        负数:【-1】= 1 1111110    【-127】= 1 0000000 【-45】=1 1010010

        小数: 【+0.5】= 0.1000000     【-0.5】=1.0111111

    根据上述反码换算,我们需要知道

        1.正数的反码就是原码!!!

        2.负数的反码就是在负数原码的基础上按位取反(1变成0,0变成1)

 

  补码:

        正数:【+1】=0 0000001    【+127】=0 1111111 【+45】=0 0101101

        负数:【-1】= 1 1111111    【-127】= 1 0000001 【-45】=1 1010011

        小数: 【+0.5】= 0.1000000     【-0.5】=1.1000000

    根据上述补码换算,我们需要知道

        1.正数的补码就是原码!!!

        2.负数的补码就是在负数反码的基础上最低位加1得到(就是二进制数的最右边的那一位加1)

 

 移码:

        正数:【+1】=0 0000001    【+127】=0 1111111 【+45】=0 0101101

        负数:【-1】= 0 1111111    【-127】= 0 0000001 【-45】=0 1010011

        小数: 【+0.5】= 0.1000000     【-0.5】=0.1000000

    根据上述补码换算,我们需要知道

        1.正数的移码就是原码!!!

        2.负数的移码就是在负数补码的基础上将符号位取反就行了(0变1,1变0)

    

负数的快速补码计算:

     将负数转换成相应的二进制原码以后,在保持符号位不变的同时,从二进制原码的最右边(最低位)开始检查,在遇到第一个1的之前什么都不变,遇到第一个1以后,后边的全部按位取反就OK!

    负数:【-1】原码= 0 0000001   ——> 【-1】补码 = 0 1111111

 

总结:

  原反补移码之间的转换可能对于初学者有点蒙,但是相信大家看了我的这篇博客以后,一定会有一些启发,本篇博客省略了一些原理性的解释,更加注重运用,如果喜欢本篇文章请给我点个赞吧!

   

 

 

 

你可能感兴趣的:(软件设计师中级)