在我复习软件设计师考试的时候,在复习到各种码之间的转换的时候,感觉有必要发一篇博客总结一下所学知识
假定机器字长为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
原反补移码之间的转换可能对于初学者有点蒙,但是相信大家看了我的这篇博客以后,一定会有一些启发,本篇博客省略了一些原理性的解释,更加注重运用,如果喜欢本篇文章请给我点个赞吧!