购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2.4 PLC中数的表示

1.正数与负数

上面所讨论的数制及数都是正数,没有讨论数的符号问题。在数字系统中(如PLC)不可能只能处理正数,不能处理负数;只能处理整数,不能处理小数。这就涉及数的表示问题。在讨论数的表示之前,先要说明一下二进制数码制及数的码制表示。

在通常运算中,正数用“+”号表示,负数用“-”号表示,如+8,-5 等。一个数只能有两种可能,不是正数就是负数(0 除外),正好是两种对立状态,而数字系统正好有 0 和 1两种状态,用它来表示正、负完全可以。参照符号一般是在数字的最前面,在数字系统中,把一组二进制数的最高位拿出来作为符号位,最高位为 0,表示后面的二进制数是正数;最高位为 1,表示后面的二进制数为负数。

2.数的表示

符号位确定后,正负数的表示方法又有原码、反码及补码表示。

1)原码表示

二进制数的原码就是指纯二进制数,把它的最高位作为符号位:0 为正,1 为负,即为二进制数的原码表示。

例如,十进制数+25,-25 的原码表示为:

纯二进制数 K25=11001

十进制数 +25, -25

二进制原码 011001 111001

用原码表示,显然,同样位数的二进制数,由于其首位为符号位,后面才是真正的数。因此,与纯二进制数相比,数的范围缩小了,这也是为什么 8 位二进制数正数最大不是 255而是 127 的原因。原码表示正、负数仅符号位不同,后面的数是一样的。原码表示出现了+0和-0,+0 为 000000,-0 为 100000(以 5 位二进制为例),正 0 不等于负 0,给计算机操作带来了很大的麻烦。

2)反码表示

什么叫反码?反码就是把原码按位求反(1 变 0,0 变 1)所得的二进制数。例如,K25的反码表示为:

纯二进码 +25=11001

原码 11001

反码 00110

正负数的反码表示法是:最高位为符号位,0 为正,1 为负。如为正数,则仍用原码表示;如为负数,则用反码表示。仍举+25,-25 为例。

纯二进制码 +25=11001

十进制数 +25-25

原码表示 0 11001 1 11001

反码表示 0 11001 1 00110

实际上,反码负数是把原码带符号位一起求反得到。

3)补码表示

什么叫补码?补码就是先把原码求反,然后在b 0 位加 1,也就是通常所说的“求反加1”。例如,K25 的补码是:

纯二进制数 +25=11001

原码 011001

求反 100110

加1 100111

正负数的补码表示法是:最高位为符号位,0 为正,1 为负,如为正数,仍用原码表示;如为负数,则用原码的补码表示(含符号位)。

纯二进制数 K25=11001

十进制数 +25-25

原码表示 0 11001 1 11001

反码表示 0 11001 1 00110

补码表示 0 11001 1 00111

目前,在数字系统中,正数和负数的表示就是采用补码表示法。补码表示的优点如下。

(1)补码表示,正数和负数互为补码。例如,-25 为 100111,如求其补码,100111 求反为 011000,加 1 后为 011001,正好是+25。

(2)补码表示,解决了 0 有+0 和-0 两种不同编码的困惑。在补码表示中,0 的表示是唯一的,即全为 0;而在原码和反码表示中,+0 和-0 是两个编码,这样就少了一种表示。例如,四位二进制数有 16 种组合,应该表示 16 个不同的数,但在原码和反码表示中,却只能表示+7~-7(+0 和-0 为两种表示,只代表 1 个数)共 15 个数。但在补码表示中,可以表示8~+7 共 16 个数,其中规定 1000 为-8,这也是在PLC中,确定数的范围时,负数总比正数多 1 的原因。例如:

8 位带符号二进制数 -128~+127;

16 位带符号二进制数 -32 768~+32 767;

32 位带符号二进制数 -2 147 483 648~2 147 483 647。

(3)补码表示最大的优点是符号位和数值位能一起参与加法运算。若产生进位,则将进位丢失,不用像原码和反码那样,先要进行符号位判别,然后还要比较大小,还要作进位判别等,使运算电路设计变得十分复杂。补码表示则不需要做上述处理,从而大大简化了电路设计,运算速度也大大加快,这就是为什么数字系统都采用补码表示的根本原因。

例 1.2-1 】 试用 8 位二进制补码表示计算:

①25+18②25-18③18-25④-25-18

解: 先写出+25,-25,+8,-8 的补码表示。

+25 00011001

-25 11100111

+18 00010010

-18 11101110

① 25+18=43

00011001+00010010=00101011(K43)

② 25-18=25+(-18)=7

00011001+11101110=00000111(K7)

进位被丢弃

③ 18-25=18+(-25)=-7

00010010+11100111=11111001(K-7)

④ -25-18=(-25)+(-18)=-43

11100111+11101110=11010101(K-43)

进位被丢弃

(4)几个特殊的补码表示

在补码表示的带符号数中,有几个数的表示要记住,下面以 8 位带符号二进制数说明。

+127 01111111

+1 00000001

0 00000000

-1 11111111

-127 10000001

-128 10000000

【试试,你行的】

(1)试写出十进制数K109 和K-37 的 8 位二进制原码、反码和补码表示。

(2)在计算机技术中,用补码来表示正数和负数有什么优点?

(3)为什么在补码表示中,负数范围要比正数范围多 1?

(4)试用 8 位二进制补码表示计算:

① 68+22 ② 68-22 ③ 22-68 ④ -68-22 IhCHhyVFEfCb+b4cumAgSbG3T8QcUSIYJrKxySLC8DpMRf/jJZMTHcnSVuuUiOA9

点击中间区域
呼出菜单
上一章
目录
下一章
×