美文网首页
详解原码反码补码

详解原码反码补码

作者: yzbkaka | 来源:发表于2019-03-13 16:12 被阅读0次

前言

emmm,最近是在学习计算机组成原理,由于事先是知道这门课是十分重要的,所以在开始上课的时候是比较认真的。可是在刚刚学到原码反码补码的时候,真的是被“学院派”们的教科书整的脑壳痛,各种高大上的介绍以及原理公式轮番攻击着我,哎,没办法,所以就整理了网上的教程,自己来写一篇比较容易理解的博客了。

讲解

1.整数的转换

首先我们需要知道一点,就是原码反码补码都是带符号的二进制数据在计算机中的表示形态,也就是说我们所有的操作对象都是面对二进制数的。其次,就是当我们将其他进制的整数转换的二进制数之后必须要有8位,如果不足8为则需要在前面补0,需要注意的是最左边的那一位数就是符号位,即0表示正数,1表示负数。举例来说:

十进制数:43
转换为二进制数:101011
补全为8位:00101011  (由于是正数,所以符号位(第一个数)为0

在将一个整数转换为二进制数之后,我们就可以来进行具体的操作了。在这里我们要将整数分为正数和负数。

正整数

正整数的转换比较的简单,所有的正整数的原码反码补码都是一样的。举例来说:

十进制数:43
补全为8位二进制:00101011
原码:00101011
反码:00101011
反码:00101011
负整数

负整数的转换则是原码反码补码之间的关系转换。首先我们需要现将该负整数的原码得出。负整数的原码就是先得到它本身绝对值的原码,之后再改变符号位即可,举例来说:

负整数:-43
绝对值43的原码:00101011  由于是负数,因此符号位要变成1
-43的原码:10101011

知道了它的原码,就可以利用关系来得出它的反码和补码了,举例来说:

负整数:-43
原码:10101011    符号位不变,后面7位取反得到反码
反码:11010100    符号位不变,将后面的数据与1相加得到补码
补码:11010101

负整数:-56
原码:10111000
反码:11000111
补码:11001000

这里需要提一下的是,在对反码加1得到补码的时候,是只对反码的最后一位加1(不是所有位!!!),如果有进位才会牵扯到前面。

2.小数的转换

小数的大体思路是和整数相似的,只不过有一点不同,就是小数的小数点的前一位就是符号位,也就是说对于小数是不用补位的。

正小数

正小数没有什么好说的,原码反码补码都是一样的,举例来说:

原码:0.1011
反码:0.1011
补码:0.1011
负小数

负小数间的转换也是和负整数类似的,都是原码反码补码之间关系的转换,举例来说:

负小数(二进制):-0.1011   由于是负数,所以改变符号位得到原码
原码:1.1011    符号位不变,其他位取反得到反码
反码:1.0100    符号位不变,将后面的加1得到补码
补码:1.0101  

相关文章

网友评论

      本文标题:详解原码反码补码

      本文链接:https://www.haomeiwen.com/subject/zhqtmqtx.html