计算机基础之原码补码那些事

写这篇文章的目的是把零零碎碎的那些知识点都做个记录,到时候好回过头复习。

1.(1)补码概念:摘自百度https://baike.baidu.com/item/%E8%A1%A5%E7%A0%81/6854613?fr=aladdin

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

(2)模的概念

“模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。

例如:在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特性。共同的特点是两者相加等于模。

https://blog.csdn.net/u013814701/article/details/63255237

https://zhidao.baidu.com/question/1239927115133880859.html

2.补码的计算:(之十进制转二级制)

(1)正整数转成二进制。要点一定一定要记住哈:除二取余,然后倒序排列,高位补零。口诀:除二取余,然后倒序排列,高位补零。

(2)负整数转换成二进制: 方法:先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一。

(3)小数转换为二进制的方法:略

摘自:https://jingyan.baidu.com/article/597a0643614568312b5243c0.html

tip:1.原码中0有2种表示方法(正零和负零),补码中0只有一种表示方法(正零和负零的表示方法一致)

为什么补码中0只有一种表示?

百度答案:楼上的说法不正确的~补码的存在是为了变减法为加法,简化了计算过程,即硬件的设计难度.首先要知道两个零是怎么来的,0包括+0和-0,在原码和反码中根据其计算公式,有两种形式,而对于补码来说+0,真值为0,000000和-0,其真值为1,0000000补码:一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,则符号位为1,其余各位是对原码取反,然后整个数加1.为了简单起见,我们用1个字节来表示一个整数:问题:0的补码表示:
+0的补码:00000000
-0的补码:第一步:11111111 第二步+1= 1 00000000 第三部:进位1被丢弃 您明白了吗?

补数相加后不能大于模

摘自:https://www.zybang.com/question/2ded8d9f283e84dd515c8ce36da28b32.html

 2.补码加法中自然丢弃和溢出的区别

十进制数相加:(-15) + (-20) = (-35)
用补码计算,就会有自然丢弃的现象。

(-15) 补= 1111 0001
(-20) 补= 1110 1100
相加:--------
可得: (1)1101 1101

括号中的1,是进位,自然丢弃。

剩下的 1101 1101,就是(-35)补。

===================================

八位的补码,可以表示十进制数-128~+127。
运算结果超出这个范围,就溢出了。

十进制数计算:(+80) + (+90) = (+170)
用补码计算,就会有溢出。

(+80) 补= 0101 0000
(+90) 补= 0101 1010
相加:--------
可得: (0) 1010 1010

进位是0。
剩下的 1010 1010,却是(-86)补。

为什么不是 (+170)补?
就是因为,超出范围,溢出了。

猜你喜欢

转载自www.cnblogs.com/bbllw/p/10089703.html