计算机中的正数,负数到底是什么意思_0算正数还是负数「建议收藏」

计算机中的正数,负数到底是什么意思_0算正数还是负数「建议收藏」author:hjjdebugdate:2017年11月14日星期二09:47:13CST-

计算机中的正数,负数到底是什么意思_0算正数还是负数「建议收藏」

—————————————-
author:hjjdebug
date: 2017年 11月 14日 星期二 09:47:13 CST
—————————————-
我要用最通俗的语言,解释清楚计算机中的正数,负数和补码的概念!

1. 计算机的算术,逻辑运算单元(cpu)是不区分正数,负数的, 它仅仅知道那是一堆二进制,
对于算术指令,(加法器,减法器),
逻辑指令(左移,逻辑右移,算术右移)
这些运算在底层位级别的实现都是相同的,
可以设想一下,一个8bit的加法器,依次加1的情景, 它不管是正数还是负数,只管一直向上累加.

算逻单元只是固定的输入,对应固定的输入而已,它是基本算术逻辑运算单元.

2. 计算机的正数,负数是怎么回事呢?
是的,这一堆数据,全看你的解释,
你可以把它解释成一个有符号数,但要按有符号数编码规则.
也可以解释成一个无符号数,但要按无符号数编码规则.
甚至,你可以把它解释成单精度浮点数(按照单精度的解释规则),
多精度浮点数(按照多精度的对应的规则) 扯得就有点远了,不在本讨论范围.

那么,这些规则是什么呢?
无符号数全部用来表示数据,8bit表示0-255.
有符号数拿出最高bit作为符号位,为0是正数,为1是负数.
正数很好理解,与无符号数的理解一致,
负数的表示就要费点周折.
考虑8bits 计算器,
0-1 = -1
0-1 = 256-1 = 255 =0xff
-1=0xff -2=0xfe -3=0xfd -4=0xfc
把-1用0xff表示,-4用0xfc表示,这就是计算机的补码表示法.
原来补码表示就这么简单,也这么自然.我们也经常这么用.
补码的概念就是到模还有多少距离. 或者说,它是减法器减下来的.

那么遇到一个负数0xe8到底是负几呢? 很简单,用0x100-0xe8=0x18
就是-24了. 就是说,这个数加上24就到了它的模256了.

0x100-0xe8=0x18 这不是按无符号数计算的吗? 是啊,cpu(中央处理单元)是不区分正数,负数的.
前面已经说过了!
不过把它当正数还是负数,到是有一些标志位会置位,它们是按照有符号数,无符号数规则设计的.
这就是cpu的运算标志寄存器! 这些标志,即给出了有符号数的运算解释,也给出了无符号数的运算解释
是否溢出,是否为0,是否符号位置位等等.

有人又总结了负数的补码表示法到底代表负几?
最前面1代表负数, 后面的数据按位取反再加1,就是负数的值了.
慢着!,为什么是按位取反再加1?
考察后面7bits数据, 按位取反之后,与原来7bits相加,就是0xff了,再加1,就是0x100,就是说,
它的含义是到模0x100还有多少距离, 这就是补码的概念吗.
以上面为例,就正是0x100-0xe8.  计算出来的数据就是负数的值.

所以补码就是”补”的意思,到模还有多少距离,不要再讲正数的补码是其本身了,正数不讲补码,负数才有补码!

今天的文章计算机中的正数,负数到底是什么意思_0算正数还是负数「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/86380.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注