必威体育Betway必威体育官网
当前位置:首页 > IT技术

二进制中原码,反码和补码是什么?

时间:2019-06-26 08:41:03来源:IT技术作者:seo实验室小编阅读:52次「手机版」
 

二进制补码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

请原谅我的不用心的截图,但因为原文章在百度文库中,下载复制是需要开通会员的,所以我就飞快的截起了图 。

附上原文章的地址 https://wenku.baidu.com/view/51cdc9a984254b35effd343e.html


不过,看完上篇后,我对于为什么计算机不使用原码而改用补码还是有惑,所以再次网上查找资料,果然,很快我就有的完美答案 。

下文转自 https://blog.csdn.net/hittata/article/details/9108365

计算机为什么选用二进制补码?

总结如下几点:

1.补码本身具有幂等性:该特性决定我们虽然运算使用补码,但是通过两次补码可以回到原码;

((X)补)补=X

a+b=(a补+b补)补

2.补码解决了正0 负0的二义性,使0的表示得到统一;

正零:00000000

负零:10000000

这两个数其实都是0,但他们的原码却有不同的表示。

但是他们的补码是一样的,都是00000000

3.CPU将加,减法统一为加法运算;

[a-b]补=a补+(-b)补

4.使符号位能与有效值部分一起参加运算,从而简化运算规则。

补码机器数中的符号位,并不是强加上去的,是数据本身的自然组成部分,

可以正常地参与运算。CPU并不知道正负,使其能够按照和无符号数一致的运算规则进行处理;

5.补码使二进制的加、减、移位等操作和十进制具有相同的运算规律;

6.负数-a实际上使用0-a结果,通过二进制运算0-a就是-a的补码,由此可见定义补码就是要求所有算术运算符合现有的运算规律;


补码意义:

所以补码的设计目的是:

⑴ 使符号位能与有效值部分一起参加运算,从而简化运算规则。补码机器数中的符号位,并不是强加上去的,是数据本身的自然组成部分,可以正常地参与运算。

⑵ 使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。

所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、c等其他高级语言中使用的都是原码。

CPU对于补码完全不知情,其只按照指令机械的按照电路设计进行工作,并对某些溢出标志位进行设置;

所有的逻辑由编译器来决定,处理的数是有符号数还是无符号数,有符号数出现溢出怎么处理,这些在编译时已经确定;

编译器送给机器的机器代码中:负数已经进行补码编码,同时编译器负数对负数结果进行转换为原码或10进制数据显示给用户;

再加深下印象 ,来个例子

此例子 转自 ,http://www.ruanyifeng.com/blog/2009/08/twos_complement.html

以-8作为例子。

假定有两种表示方法。一种是直觉表示法,即10001000;另一种是2的补码表示法,即11111000。请问哪一种表示法在加法运算中更方便?

随便写一个计算式,16 + (-8) = ?

16的二进制表示是 00010000,所以用直觉表示法,加法就要写成:

00010000

+10001000

---------

 10011000

可以看到,如果按照正常的加法规则,就会得到10011000的结果,转成十进制就是-24。显然,这是错误的答案。也就是说,在这种情况下,正常的加法规则不适用于正数与负数的加法,因此必须制定两套运算规则,一套用于正数加正数,还有一套用于正数加负数。从电路上说,就是必须为加法运算做两种电路。

现在,再来看2的补码表示法。

00010000

+11111000

---------

100001000

可以看到,按照正常的加法规则,得到的结果是100001000。注意,这是一个9位的二进制数。我们已经假定这是一台8位机,因此最高的第9位是一个溢出位,会被自动舍去。所以,结果就变成了00001000,转成十进制正好是8,也就是16 + (-8) 的正确答案。这说明了,2的补码表示法可以将加法运算规则,扩展到整个整数集,从而用一套电路就可以实现全部整数的加法。


![在这里插入图片描述](https://img-blog.csdn.net/20180917185715970?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RlZF9jcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

相关阅读

计算机基础进制转换(二进制、八进制、十进制、十六进制

作者:戴翔电子邮箱:[email protected]简介:中华人民共和国公民,中国共青团员,CSDN博客专家,秦淮区疾控中心托管社会公益组织指南针

补码详解

首先我们来了解下补码的定义,在很多资料上说补码都是从原码说起,但实质上补码是有其定义的:补码定义:计算机中二进制形式的补数。这个

格雷码与二进制的转换

一、什么是格雷码?格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个

转---原码,反码,补码的深入理解与原理。

/*最近在重新学习一遍C语言,以更加深入的理解C语言,为C++打下比较坚实的基础。此次学习主要依据的书籍依然为《C Primer plus》中文

注册表中字符串值、二进制值、DWORD值区别介绍

注册表字符串值、二进制值、DWORD值是什么意思?刚编辑的上一篇关于注册表的内容中,竟然把这些内容忘掉了,实在是不该。好在现在想起

分享到:

栏目导航

推荐阅读

热门阅读