软考学习——“码制”学习

来源:互联网 发布:软件技术服务协议范本 编辑:程序博客网 时间:2024/05/20 10:13

  在刚开始学习软考的时候就遇到了关于码制的学习内容

  为了便于运算,带符号的机器数可采用原码、、反码、补码等不同的编码方法,机器数的这些编码方法称为码制。

书上的内容只要讲了原码、反码、补码和移码。这一部分的内容,自己看了一个小时才弄懂,所以想花的时间做一个小的总结

  以45和-45、机器字长为8 为例

原码:将两个数字转换为二进制数,不够的位数用0进行补充,在开始的第一位用0或者表示正负(0代表正数、1代表负数)

45 装换为二进制数时为“101101”所以用原码表示“00101101”

同理 -45装换为原码:“10101101”

可以发现除了符号(第一位的0或者1)不一样,其余的部分都一样

然后是反码: 

对于正数来说,反码不会发生变化,依旧等于原码,

对于负数来说,除了符号位不发生变化,其余各位均求反(就是0改成1、1改成0)

所以

 45反码:00101101

-45反码:11010010

很明显看出来,除了正数和负数的反码各位都是不一样的。换句话说,负数的反码=正数的反码求反


然后说补码:

对于正数来说,补码依旧等于本身

对于负数来说,补码等于反码+1

所以

 45补码:00101101

-45补码:11010011


最后剩下一个移码:

对于移码的求解

正数的移码,等于补码符号位取反(既第一位由0变为1)

负数的移码,等于补码符号位取反(既第一位由1变为0)

所以

 45移码:10101101

-45移码:01010011


这样四种就全都梳理完了,然后再做一个纵向的总结

对于正数来说:

原码=反码=补码= -移码

对于负数来说

反码=原码取反(除符号位)

补码=反码+1

移码=-补码


这样来看,是不是整个就清楚了很多了。


如果依旧有不是很懂的地方,欢迎在下方留言,有不好的地方,欢迎斧正




原创粉丝点击