计算机中为什么用补码来表示有符号数?

有符号数在计算机中有三种表示法,即原码、补码和补码。在计算机系统中,数值总是用补码来表示和存储。补码是用8位二进制表示的,表示方式有很多种,包括16位二进制、32位二进制和64位二进制。同一个数在不同的补码表示中是不同的。例如-15的补码在

为什么要引入补码 要引入补码的原因

事实上,补数是一个正数。quot做运算而不是负数 。

有了补码,电脑里就没有负数了。

所以电脑里没有减法。

所以只要电脑里有加法器,全世界都可以用。

正数怎么代替负数?

当一个数的位数有限时,计数具有周期性。

比如规定只使用0~99两位小数,周期为10 ^ 2=100。

此时,您可以:

25 – 1=24

25 99=(一百)24

放弃进位只取两位数,那么99和-1是等价的。

99叫做-1的补码。

公式:补码=周期(10 n)负数,其中n是补码的位数。

计算机使用二进制,称为:补码。

如果是8位二进制,周期就是2 ^ 8=256。

公式:补码=周期(2 n)负数,其中n是补码的位数。

使用补码后,可以通过加法实现加减运算。

因此,可以简化计算机硬件。

这就是 介绍补语。quot。

原码和反码都没有这个功能,所以计算机不使用它们。

计算机中为什么用补码来表示有符号数?

通过补码运算,可以根据最高位和次高位的进位之差来判断计算结果是否溢出。

符号数在计算机中有三种表示法,即原码、补码和补码。

这三种表示有两部分:符号位和数字位。符号位是 积极 用0和 消极 具有1,而数字位具有不同的表示。

在计算机系统中,数值总是用补码来表示和存储。原因是有了补码,符号位和数值域可以统一处理;同时,加减法也可以统一处理。

正整数的补码是它的二进制表示,和原码一样。

例:9的补数是。

(注:此9 补码是用8位二进制表示的,表示方式有很多种,包括16位二进制、32位二进制和64位二进制。每个补码表示只能表示有限的数。)

负面解读:

求负整数的补码,将其原码除符号位外的所有位取反后加1(0变1,1变0,符号位不变)。

同一个数在不同的补码表示中是不同的。例如-15的补码在8位二进制中是,但在16位二进制补码表示中是01。以下全部用8位二进制表示。

为何要用补码?

在计算机系统中,数据总是用补码来表示和存储。

原因是有了补码,加减就可以统一了。

补码就是补码,与原码的补码无关。

你可以 不理解 为什么要用补语? 。

补语实际上是a 正数代替负数运算。quot。

例如,十进制运算:

24 – 1=23

24 99=(一百)23

弃进位,99可以代替-1。

这时候减法就转化为加法了。

那么,99叫做-1的补数。

丢弃进位是一个2位数的十进制计数周期:10 ^ 2=100。

大家可以推导出求补数的公式:负周期。

其实在三角函数中,大家都知道:

-/2和3/2,这两个角的作用相同。

负角和正角怎么换?

还用到公式:正角=负角周期(2)。

计算机用二进制,补码,所以叫:补码。

8位二进制的计数范围是:0000 0000 ~ 1111 1111。

转换成十进制,即:0 ~ 255。

计数周期为2 ^ 8=256。

那么-1的补码就是255(也就是1111 1111)。

-2的补码是:-2 256=254=1111 1110。

-128的补码是:128=1000 0000。

这是可以用八位二进制表示的128个负数。

求补数的公式还是:负句号。

正数可以直接运算,不需要变换。

所以正数根本没有补数。

要找到补码,你不要 不需要联系 原始代码的符号位被反转并加 。

那些乱七八糟的东西没必要。

外国人不擅长数学,所以他们别无选择,只能做这些 道路封锁 诡计。

为什么计算机要使用补码??

【toc】开门见山,我认为有两个最重要的原因。

因: 之前在网上查资料,查到的原因大多数都是解释了第一点,而且解释的有理有据令人信服。 所以我这里先说第二点,规则一致,这个是看了 深入理解计算机系统 的公开课学到的。

B站深入理解计算机系统公开课(有中文字幕,强烈推荐) 顺便提一嘴,研究这种问题不要用很大的数去想,就用4位数去思考反而能想的很清楚。

假设我们有一个 只有4位的计算机,计算乘法 -2 * -3 的值 。如果使用原码或者反码进行计算, 注意,乘法的计算规则是:直接截断保留最低4位,保留后的最高位即为符号位。 -2 的补码: 1110 转换成无符号数(十进制) : 14 -3 的补码: 1101 转换成无符号数(十进制) : 13 无符号数 14 * 13 = 182 将182 转换成 二进制 并且只保留最低 4 位: 0110 (0110的十进制是 6, 等于正确答案) -2 的原码: 1010 转换成无符号数(十进制) : 10 -3 的原码: 1011 转换成无符号数(十进制) : 11 无符号数 10 * 11 = 110 将110 转换成 二进制 并且只保留最低 4 位: 1110 (1110的十进制是 -6 或者 14,均不等于正确答案 6) 如果你觉得这是个巧合,那么可以自己试几个数算一下,或者用反码也算一下,看看是什么结果。 可以简化硬件的计算,因为硬件就是单纯的电路板,它可不知道什么符号位,它能做的就是把接收到的两个值做运算。

如果计算机使用原码,那么是不是cpu需要准备两套运算电路,运算前还要做个 if else 判断?一套给有符号数用,一套给无符号数用。这样子会造成极大的资源浪费。 但是 如果我们使用补码,就可以让硬件无脑的计算再截断好了,反正最后的值不论是 有符号 还是 无符号, 都能得到正确的答案 。

由于讲这个的太多了,这里就简单说一下(不写反码了,直接用补码举例)。 用整数 1 来做个实验, 1 的原码是 0001,补码是 0001。 -1的原码是1001,补码是 1111。

如果你让 1 和 -1 的原码相加,那么他们很明显不得 0, 但是补码相加溢出再截断,最后等于0 。 至于为什么会这样?因为补码的定义就是这样啊 用我自己的话总结:补码就等于现有的位再加一位,新加的位等于1,其余都为0 。减去当前的原码,就成了补码。

用例子来说就是 10000 (总共5位) 减去 1 的原码 0001, 就等于 1 的补码 1111 。 10000 – 00001 = 1111 用 -1 举例 , -1 的补码 1111 这四位不是对应着 8 4 2 1 嘛,那么直接把 最高位 的值 乘以 -1, 其他位都是正值,加起来就行了。

计算机中为什么用补码表示数值?

在计算机系统中,数值,一律采用补码表示和存储。

在计算机中,原码和反码,都是不存在的。

所谓的补码,实际上,是“代替负数”的正数。

使用了补码(正数),计算机中,就没有负数了。

同时,也就没有减法运算。

由此,计算机的硬件,就能够得以简化。

----------------------

正数(即补码),怎么就能代替负数呢?

当限定了参加计算的位数,计数,就是周期性的。

如 2 位 10 进制数,周期就是 10^2 = 100。

此时,-1 就能用 99 代替:

25 - 1 = 24

25 + 99 = (进位) 24

你把进位舍弃,只保留 2 位数,这两种算法,就是相同的。

算法:代替负数的正数=负数+周期。

-------

8 位 2 进制数,周期是: 2^8 = 256。

-1 就可以用 255 = 1111 1111 代替。

----------------------

使用补码的目的,是:简化硬件。

算法:补码=负数+2^n,n 是补码的位数。

求补码,是很简单的事。

千万别拐到“原码反码取反加一符号位不变”去。

老外脑子不好用,才会弄出哪些个骚操作!

如果从“取反加一”学习,必然就不理解“为什么用补码”。

因为老外也不知道,为什么用补码表示数值。

本文到此结束,希望对大家有所帮助。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至81118366@qq.com举报,一经查实,本站将立刻删除。发布者:简知小编,转载请注明出处:https://www.jianzixun.com/75952.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫

相关推荐

软文友链广告合作联系站长qq81118366