1.3.1  真值与机器数

上述讨论的过程中都没有考虑二进制数的符号,一般认为其为正数,但在算术运算过程中,总会出现负数。实际上不带符号的数是数的绝对值,在绝对值前加上表示正负的符号(+/- )就成了带符号数。它可由两部分组成:一部分是表示数的符号,另一部分是表示数的数值。由于数的符号是一个具有正、负两种值的离散信息,所以它可以用一位二进制数来表示。通常是以0表示正数,以1表示负数。对于一个n位二进制数,如果数的第一位为符号位,那么余下的n-1位就表示数的数值部分。

一般,直接用正号“+”和负号“-”来表示符号的二进制数,称为符号数的真值。数的真值形式是一种原始形式,无法直接用在数字计算机中。但是,当将符号数值化之后,便可以在计算机中使用它了。因此在计算机中使用的符号数便称为机器数。

如二进制正数+1011在机器中的表示为01011,二进制负数-1011在机器中的表示为11011。

通过前面介绍的二进制数的加、减、乘、除四种运算可知,乘法运算实际上是做左移加法运算,而除法运算则是做右移位减法运算。即在机器中只需要做加、减两种运算。但在做减法运算时,必须先比较两个数绝对值的大小,再将绝对值大的数减绝对值小的数,最后在相减结果的前面加上绝对值较大的数的符号。因此,虽然逻辑电路可以实现减法运算,但所需的电路复杂,运算速度较作加法慢得多。为了能使减法运算变成加法运算,人们给出了三种机器数的表示形式,即原码、反码和补码。

1.3.2  原码

原码又被称为“符号—数值表示”。用当原码形式表示正数和负数的,第1位是符号位。对于正数,符号位表示的0,对于负数,符号位表示的1,其余各位表示数值部分。

假如两个带符号的二进制数分别为S1和S2,其真值形式为

S1= +11001    S2= -01011

则S1和S2的原码表示形式为

[S1]原= 011001    [S2]原= 101011

根据上述原码形成规则,一个n位的整数S (包括一位符号位)的原码一般表达式为

              (1.3.1)

对于定点小数而言,一般将小数点定在最高位的左边,此时,数值小于1。定点小数原码一般表达式为

                  (1.3.2)

由原码的一般表达式中可以得出:

(1 )当S为正数时,[S]原和S的区别只是增加一位用0表示的符号位。由于在数的左边增加一位0对该数的数值并无影响,所以[S]原就是S本身。

(2 )当S为负数时,[S]原和S的区别是增加了一位用1表示的符号位。

(3 )在原码表示中,有两种不同形式的0,即

[+0]原= 0.00…0

[- 0]原= 1.00…0

1.3.3  反码

反码又称为“对1的补数”。当用反码表示时,左边第1位即为符号位,符号位为0代表正数,符号位为1代表负数。对于正数,反码和原码相同。而对于负数,反码的数值是将原码数值按位求反,即原码的某位为1,则反码的相应位便为0,或者原码的某位为0,反码的相应位便为1。所以,反码数值的形成与它的符号位有关。

假如两个带符号的二进制数分别为S1和S2,其真值形式为

S1= +1l001   S2= -01011

则S1和S2的反码表示形式为

[S1]反= 011001    [S2]反= 110100

根据上述的反码形成规则,一个n位的整数S (包括一位符号位)的反码一般表达式为

                   (1.3.3)

同样,对于定点小数,如果小数部分的位数为m,则它的反码一般表达式为

                      (1.3.4)

从反码的一般表达式可以看出:

(1 )正数S的反码[S]反与原码[S]原相同。

(2 )对于负数S,其反码[S]反的符号位为1,数值部分是将原码数值按位求反。

(3 )在反码表达式中,0的表示有两种不同的形式,即

[+0]反= 0.00…0

[-0]反= 1.11…1

1. 3. 4  补码

补码又称为“对2的补数”。在补码表示方法中,正数的表示同原码和反码的表示是一样的,而负数的表示却不相同。对于负数,将原码转变成补码的规则是:符号位不变,仍为l,数值部分变反加1,即逐位变反,在最低位加1。

如两个带符号的二进制数分别为S1和S2,其真值表达式为

S1= +11001      S2= -01011

则S1和S2的补码表示形式为

[S1]补= 011001    [S2]补= 110101

根据上述补码形成规则,一个n位的整数S (包括一位符号位)的补码一般表达式为

                    (1.3.5)

同样,对于定点小数,补码一般表达式可写成

                         (1.3.6)

由补码的一般表达式可以看出:

(1 )正数S的补码[S]补、反码[S]反和原码[S]原是相同的

(2 )对于负数,补码[S]补的符号位为1,其数值部分为反码的数值末位加1。

(3 )在补码表示法中,0的表示形式是唯一的。即

[+0]补= 0.00…0

[-0]补= 0.00…0

1. 3. 5  机器数的运算

前面介绍了带符号数的三种表示法,由于形成规则不同,加、减运算的规律也不相同。下面分别加以介绍。

一、原码运算

原码中的符号位仅用来表示数的正、负,不参加运算。进行运算的只是数值部分。原码运算时,应首先比较两个数的符号,若两数的符号相同,则可将两个数的数值相加,最后给结果附上相应的符号;若两数的符号不同,则需比较两数的数值大小,然后将数值较大的数减去数值较小的数,并将数值较大的数的符号作为最后结果的符号。下面举例说明。

例1.3.1  已知S1=  0.1001,S2= -0.0101,求[S2+S1  ]原和[S2-S1]原。

解:    [S2+S1]原= [ (-0.0101 )+ (0.1001 )]原

由于S1和S2的符号不同,并且的S1绝对值大于S2的绝对值,因此要进行S1减S2的运算,其结果为正。

运算结果为原码,即

[S2+S1]原= 0.0100

故其真值为

S2+S1= 0.0100

又     [S2-S1]原= [ (-0.0101 )- (0.1001 )]原

由于S1和S2的符号相同,因此,实际上要进行Sl加S2的运算,其结果为负。

运算结果为原码,即

[S2-S1]原= 1.1101

故其真值为

S2-S1 = -0.1101

二、反码运算

由反码的定义可以得到反码加、减运算规则如下:

[S2+S1]反= [S2]反+[S1]反

[S2-S1]反= [S2]反+[-S1]反

反码的加、减运算规则表明:两数和的反码等于两数的反码之和,而两数差的反码也可以用加法来实现。运算时,符号位和数值位一样参加运算,如果符号位产生进位,则需将此进位加到和数的最低位,称之为“循环进位”。运算结果的符号位为0时,说明是正数的反码,与原码相同;运算结果的符号位为1时,说明是负数的反码,应再对运算结果求反码,才得到原码。下面举例说明。

例1.3.2  已知S1=  0.1001,S2= -0.0101,求[S2+S1]反和[S2-S1]反。

解:  [S2+S1]反= [S2]反+ [S1]反=  1.1010+0.1001

由于符号位产生了进位,因此要进行“循环进位”,即

[S2+S1]反=  0.0100

由于其符号位为0,则其真值为S2+S1=  0.0100

又  [S2-S1]反=  [S2]反+ [-S1]反=  1.1010+1.0110

由于符号位产生了进位,因此要进行“循环进位”,即

[S2-S1]反=  1.0001

由于其符号位为1,则其真值为S2-S1=  -0.1110

三、补码运算

补码运算同反码运算一样,两数差的补码可以用两数补码的加法来实现。补码加、减运算规则是:

[S2+S1]补=  [S2]补+[S1]补

[S2-S1]补=  [S2]补+[-S1]补

运算时,符号位和数值位一样参加运算,如果符号位产生了进位,则此进位可“略去”。运算结果符号位为0时,说明是正数的补码,与原码相同。运算结果符号位为l,说明是负数的补码,应对结果再求补码才得原码。

下面举例说明。

例1.3.3 已知S1=  0.1001,S2=  -0.0101,求[S2+S1]补和[S2-S1]补。

解:  [S2+S1]补=  [S2]补+[S1]补=  1.1011+0.1001

由于符号位产生了进位,因此,要将此进位略去,即

[S2+S1]补=  0.0100

运算结果的符号位为0,说明是正数的补码,补码与原码相同。

由于其符号位为0,则其真值为

S2+S1=  0.0100

又   [S2-S1]补=  [S2]补+[-S1]补=  1.1011+1.0111

由于符号位产生了进位,因此,要将此进位略去,即

[S2-S1]补=  1.0010

运算结果的符号位为1,说明是负数的补码,应对补码求补后才能得到原码,即

[S2-S1]原=  1.1110

由于其符号位为1,则其真值为

S2-S1= -0.1110

从上述的讨论可以看出,原码、反码和补码各有优缺点。原码表示法简单方便,但原码减法必须做真正的减法,不能用加法来代替,因此实现原码运算所需的逻辑电路比较复杂。反码和补码的优点是只需用加法逻辑电路便可实现。并且用补码进行减法运算很方便,它只需进行一次算术相加。而用反码进行减法运算,若符号位产生进位就需进行两次算术相加。而且反码还有一个缺点,就是具有两个零值,这容易在计算过程中产生歧意。

计算机中带符号的整数表示方法,带符号数的代码表示-数字电子技术-电子发烧友网站...相关推荐

  1. IEEE 754——计算机中浮点数的表示方法

    楔子 #include <iostream> int main(int, char**) {std::cout.precision(20);float a = 123.4567890123 ...

  2. 计算机中的表示方法,计算机应用基础第三章计算机中信息的表示方法

    <计算机应用基础第三章计算机中信息的表示方法>由会员分享,可在线阅读,更多相关<计算机应用基础第三章计算机中信息的表示方法(17页珍藏版)>请在人人文库网上搜索. 1.第第三三 ...

  3. 在计算机中常用的数据表示方法有哪些,数据在计算机中的表示方法

    1,2020/5/25,数据在计算机中的表示方法,2,2020/5/25,教学目标:了解计算机内部信息用什么进制表示,为什么要采用这种进制:掌握数制之间的转换,了解存储中几个概念及数据的编码重点及难点 ...

  4. 计算机中信息表示方法,计算机中的信息表示方法二进制

    计算机中的信息表示方法二进制Tag内容描述: 1.,计算机中的信息表示方法 二进制,抚顺县石文学校信息技术教研组 袁丽丽,学 习 目 标,1.了解二进制与十进制的对应关系: 2.学会二进制与十进制的换 ...

  5. 计算机中的信息表示 ppt模板,第2章 计算机中信息的表示方法.ppt.Convertor

    第2章计算机中信息的表示方法 2.1概述 计算机要对各种信息或数据进行处理,首先遇到的第一问题是必须将各种信息以计算机可以识别的方式表示,并且以一定的形式存储在计算机(存储器)中.现代计算机大都是以二 ...

  6. 计算机中浮点数的表示方法

    计算机中浮点数的表示方法 http://cenalulu.github.io/linux/about-denormalized-float-number/ 可以在这个网址验证自己的想法 https:/ ...

  7. 计算机中数的存储和处理都使用二进制对吗,计算机中的数据可分为两种类型:数字和字符,它们最终都要转换为二进制代码进行存储和处理。对于人们习惯的十进制数字,通常用____进行转换。...

    计算机中的数据可分为两种类型:数字和字符,它们最终都要转换为二进制代码进行存储和处理.对于人们习惯的十进制数字,通常用____进行转换. 更多相关问题 [单选] 电力线路巡视检查周期,定期巡视每月至少 ...

  8. Java EasyExcel在Web网站中读写Excel的方法及示例代码

    使用EasyExcel可以更容易简单在Web网站中读写Excel,本文主要介绍在Java Web网站中读写Excel方法及示例代码. 原文地址:Java EasyExcel在Web网站中读写Excel ...

  9. 计算机中丢失api-ms 解决方法

    转载链接 :https://jingyan.baidu.com/article/9989c746eb0715f649ecfe55.html 介绍 1.因为目前基本都是使用的盗版win的系统,很多不完整 ...

  10. 计算机中的方法,计算机中文本的表示方法

    类似问题答案 2021年云南省高等教育招收中等职业学校学生(计算机类)技能考核考试掌握选定任意文... 2.2 掌握选定任意文本的方法 2.3 文本的复制.剪切和粘贴方法 2.4 掌握文本格式的设置方 ...

最新文章

  1. WinDbg用法详解
  2. fir滤波器c++程序_电气信息类专业课程之matlab系统仿真 第三章 滤波器的种类(1)...
  3. Linux学习笔记之安装mplayer过程详解
  4. 一图解明Android Studio项目文件结构各部分作用
  5. R语言观察日志(part15)--R的缺点
  6. 解决fatal: unable to connect to github.com问题
  7. opencv SIFT角检测
  8. python从入门到精通需要多久-python从入门到精通需要多久?你需要先明白这两个点...
  9. 易筋SpringBoot 2.1 | 第廿四篇:SpringBoot访问Docker中的MongoDB
  10. Ubuntu20设置蓝牙
  11. pandas学习task11综合任务
  12. VMware安装ubantu系统
  13. MSP430第三十二章:Comp_B
  14. matlab纵坐标两边标注,matlab纵坐标标注
  15. 什么叫做实体经济危机?
  16. NOI2002银河英雄传说——带权并查集
  17. 视频教程-Python数据分析案例实战 视频课程-Python
  18. 【Java多数据源实现教程】实现动态数据源、多数据源切换方式
  19. RDP报表工具v2.3.*版本升级操作步骤
  20. 商场、超市信息发布系统解决方案

热门文章

  1. C语言sb代码,10个重要的算法C语言实现源代码
  2. linux下lamealsa进行音频流操作(八)用ffmpeg将mp3转为wav
  3. 计算机构成教学反思,计算机教学反思
  4. 居住证申领条件放宽!关系孩子上学!
  5. SEO工具:免费快速排名软件大全!
  6. 2019 ngChina 开发者大会 - 工作坊系列:RxJS,Angular,和全栈开发
  7. 福昕阅读器注册无法连接服务器,福昕pdf阅读器 10安装使用教程(附注册机)
  8. 法国五名酒吧和咖啡馆老板因使用无日志WiFi网络被捕
  9. SecureCRT免费版下载
  10. 硬件基础之继电器互锁工作原理