当前课程知识点:大学计算机基础 > 第二章 数据的表示与运算 > 2-3 整数的表示方法 > 2-3 整数的表示方法
大家已经知道了计算机系统中
常用的进位计数制
以及它们之间的相互转换
从这节开始我们学习计算机中
数据的表示
计算机存储和处理的数据
包括数值型数据和非数值型数据
数值型数据有大小正负之分
并要进行加减乘除等运算
如银行的存款,学生的成绩等
是数值型数据
而非数值型数据没有正负大小之分
像英文字母,标点符号等等
这节我们先来介绍数值型数据的表示方法
各种数值型数据在计算机当中
都以一串0和1组成的二进制数串来表示
称为数值型数据的机器数
而该二进制数串
所对应的数值型数据的大小被称为真值
数值型数据又分为整数和浮点数
这一节我们先来介绍整数的表示方法
我们先来回顾一下
二进制和十进制的对照关系
为了简单起见
我们以机器字长是3为例
n位二进制数它能够表示的数
有2的n次方个
当机器字长是3的时候
2的3次方能够表示8个值
我们让它对应十进制数的0到7
但这个时候表示都是无符号数
要用3位二进制的八种组合
表示有符号数的话
那数的正负也要用二进制来表示
我们就得把表示空间分割一下
一般是对半分
一半表示正数,一半表示负数
那该如何表示呢
常用的表示方法有原码,反码,补码和移码
下面我们分别来看一下
首先是整数的原码表示
我们把表示空间对半分
一半表示正数,一半表示负数
用首位是0的二进制表示正数
而用首位是1的二进制表示负数
于是以0开头的这几位分别表示
0,+1,+2和+3
而以1开头的这几位分别表示的是
-0,-1,-2和-3
于是整数的原码就由符号位和数值位
两部分构成
通常用机器数的最高一位作为符号位
0表示正数,1表示负数
剩余位是数值位
当机器字长是n的时候
当一位被用作了符号位
那只有n-1位是作为数值位
那这n-1位二进制数能够表示的
最大的真值是2的n-1次方减1
所以原码能表示的真值的范围
是负的2的n-1次方减1
到2的n-1次方减1
超出这个范围的数
就不能用n位字长的原码表示了
原码表示法规则简单
机器数和真值之间容易转换
但这种表示法有一个缺陷
是0的表示不唯一
当0作为正数的时候有一种表示方法
作为负数的时候又有另外一种表示方法
这增加了运算规则的复杂性
另外原码的加减运算也较难用硬件来实现
为什么呢
如果我们把符号位和数值位
同时进行运算的话
会得到错误的结果
举个例子来看
假设x和y分别对应的是2和-1
如果x+y正确的结果应该是1
如果我们用原码来进行运算的话
2对应的原码我们查找一下是010
-1对应的原码我们查找一下是101
当把这两个二进制数进行加法运算的时候
我们得到的结果111
查表它对应的真值是-3
结果是错误的
要想得到正确的原码运算结果
要判断两个数的正负号
以及绝对值的大小
这会使运算变得非常的复杂
因此为了运算的方便
计算机当中引入了反码和补码的概念
将加减法运算统一转换为补码的加法运算
我们先来认识一下反码表示
所谓反码就是当表示负数时
把相应的正数的表示按位取反
我们看以0开头表示的正数
分别表示的是+0,+1,+2和+3
那按位取反
得到的就是对应的负数的反码表示
对0来说
它的表示按位取反我们得到111
就是-0的反码表示
对于1 它的表示是001
按位取反 得到110
这就是-1的反码表示
2的010按位取反,得到的是101
这是-2的反码表示
最后3的011按位取反得到100
这是-3的反码表示
所以一个整数的反码
也是由符号位和数值位两部分构成的
最高一位为符号位
其余位为数值位
符号位为0表示正数,为1表示负数
正数的反码表示和原码相同
而负数的反码表示是对应正数的反码
按位取反
若机器字长是n
则反码表示的数据的真值范围和原码相同
也是负的2的n-1次方减1
到2的n-1次方减1
由于0的反码表示也不唯一
当数据采用反码表示时
它的运算都很难用硬件来实现
因此计算机中数据的存储和运算
很少用反码
但我们可以根据一个数的反码
来求其补码
而补码在计算机中被大量采用
可以解决原码和反码中出现的问题
下面我们就来看看补码表示
在补码中,当表示一个负数时
我们先把相应的正数的表示按位取反
这时得到的就是反码
然后再在末位加1
以0开头的表示正数
分别是+0, +1,+2和+3
接下来我们按位取反
然后再在末位加1
先对0我们看看
是否还存在两种表示的问题
0的补码是000
我们首先按位取反得到111
最后再在末位加1
产生进位
因为机器字长是3位
所以最终的这个进位会被无条件地丢弃
所以-0的补码表示照样是000
我们看到0不管是当作正数还是负数
在补码当中0的表示是唯一的
对于1我们看一下它的表示是001
首先要按位取反得到110
接着再在末位加1得到111
所以这是-1的补码表示
对于2它的表示是010
首先要按位取反
然后在末位加1
得到的是110
这是-2的补码表示
那对于3呢 011
首先按位取反得到100
再在末位加1得到101
这个是-3的补码表示
由于0的表示唯一
我们看到这里就多出了一个编码
这个编码由于它的最高一位是1
可以看作是符号位,表示负数
又可以表示数值
所以我们就用多出来的这一位编码-4
所以当机器字长是n的时候
补码表示的数值的真值,它的范围
是负的2的n-1次方
到2的n-1次方,减1
负数比正数多表示一个
一个整数的补码仍然是由最高一个符号位
和剩余的数值位组成
符号位为0表示正数,为1表示负数
正数的补码和它的原码相同
而负数的补码是将对应正数的原码
按位取反
然后再在末位加1
其中原码的按位取反得到的就是反码
所以负数的补码也可以由其反码
末位加1得到
在补码中除了0的表示唯一
补码表示的另外一个好处是
我们可以把两个数的减法运算
转换成加法运算来实现
这时候我们再回过头来看前面的例子
现在我们用补码来计算2-1
看看结果是不是正确
2对应的补码表示是010
我们把减法运算转换成加法运算来实现
2+(-1)
而-1对应的补码查找一下是111
把这两个二进制数做一个加法运算
这里产生进位
最高一位的进位将被无条件丢弃
得到的结果是001
001对应的真值是1
那转换的结果是正确的
计算机中大量采用补码
来进行整数的存储和运算
大大简化了计算机运算器的硬件的实现
最后一种数值表示方法
我们来看移码表示
移码可以由补码变换得到
无论是正数还是负数
其移码都是将该数的补码的符号位按位取反
下面我们就来看一下移码表示
移码表示只要把对应的
补码表示的符号位取反就可以了
0的移码对应的是100
1的移码是101
2的移码是110
3的移码都是把符号位取反
在移码表示中符号位为0
这回表示的是负数
而为1表示正数
在移码中0也有唯一的表示
我们看到0的表示是100
当机器字长是n的时候
移码表示的数的真值的范围跟补码相同
也是负的2的N-1次方
到2的N-1次方减1
负数比正数多表示一个
我们知道引入补码的好处
是可以把减法运算转换成加法运算来实现
那么定义移码又有什么用处呢
在补码表示中
符号位也被当作数值位一起参与运算
但是我们很难从形式上
判断数的真值的大小
比如说我们看到这里
2它的补码是010
而-2对应的补码是110
但是从形式上来看 -2最高位为1
从形式上来看它应该比2的真值还要大
这跟人们的习惯不相符
那我们看一下移码
两个数的大小在移码表示中
可以直接相比较而得到
我们重新排列一下刚才的表示
这回我们把移码表示
按照从-4到3的顺序把它重新排列
大家看到当真值从小到大的时候
对应的移码表示也是在不断增加的
移码通常用来表示浮点数的指数部分
指数部分也叫阶码
能方便地判断阶码的大小
从补码获得移码转换方便
只需要更改符号位
而移码表示
更符合人们对二进制大小的判断习惯
最后我们总结一下
这一节我们介绍了
常用的数值型数据的表示方法
包括原码,反码,补码和移码
这是四种表示方法的对照表
在四种表示方法当中
最高位都是符号位
对于正数,原码,反码,补码表示都相同
而对于负数
反码是对其原码的数值位按位取反
而补码是对反码的末位加1
移码又是对补码的符号位取反
在原码和反码中0的表示不唯一
但是在补码和移码中0的表示唯一
补码和移码比原码和反码多表示一个负数
谢谢大家的观看
-1-1 计算机的诞生
--第一章 习题1
--计算机的诞生1
--计算机的诞生2
-1-2 计算机的分类
--第一章 习题2
--计算机的分类
-1-3 计算机的应用领域
--第一章 习题3
-1-4 计算机系统组成
--第一章 习题4
--计算机系统组成1
--计算机系统组成2
-1-5 计算机思维的定义
--第一章 习题5
--计算思维1
-1-6 计算思维的特点
--第一章 习题6
--计算思维2
-1-7 计算思维的应用案例
--第一章 习题7
--计算思维3
-第一章 章测试
-2-1 进位计数制表示方法
--第二章 习题1
-2-2 进位计数制的相互转换
--第二章 习题2
--进位计数制2
-2-3 整数的表示方法
--第二章 习题3
--整数的表示1
-2-4 浮点数表示方法
--第二章 习题4
--浮点数的表示1
-2-5 BCD格式表示法
--第二章 习题5
--BCD码
-2-6 算术运算
--2-6 算术运算
--第二章 习题6
-2-7 运算溢出及判断
--第二章 习题7
--运算的溢出
-2-8 逻辑运算
--2-8 逻辑运算
--第二章 习题8
--逻辑运算
-2-9 ASCII编码
--第二章 习题9
-2-10 Unicode编码
--第二章 习题10
-2-11汉字编码
--2-11汉字编码
--第二章 习题11
--汉字编码
-2-12数据校验编码
--第二章 习题12
--数据校验编码
-第二章 章测试
-3-1中央处理器
--3-1中央处理器
--第三章 习题1
--中央处理器
-3-2 存储器
--3-2 存储器
--第三章 习题2
--存储器1
--存储器2
--存储器3
-3-3 总线和接口
--第三章 习题3
--总线
-3-4 外部设备
--3-4 外部设备
--第三章 习题4
--外部设备
-3-5 冯.诺依曼体系结构
--第三章 习题5
-3-6 计算机常用性能指标
--第三章 习题6
--性能指标1
--性能指标2
-3-7嵌入式系统
--第三章 习题7
--嵌入式系统
-3-8哈佛体系结构
--第三章 习题8
--哈佛体系结构
-3-9 DSP简介
--3-9DSP简介
--第三章 习题9
--DSP
-3-10 虚拟台式计算机模拟器
--虚拟桌面架构
-3-11 4位计算机模拟器
-第三章 章测试
-4-1计算机软件分类
--第四章 习题1
--软件分类
-4-2软件的工作模式
--第四章 习题2
--软件的工作模式
-4-3软件的安装方法
--第四章 习题3
--软件安装
-4-4计算机软件生命周期
--第四章 习题4
--生命周期1
--生命周期2
--生命周期3
--软件测试1
--软件测试2
-4-5计算机软件开发过程模型
--第四章 习题5
- 4-6 常用软件介绍-办公软件
--第四章 习题6
-办公软件实例1 文字处理软件
-办公软件实例2 电子表格软件
-办公软件实例3 演示文稿软件
-4-7 常用软件介绍-多媒体创作软件
--第四章 习题7
-多媒体创作软件实例1 音频处理软件
-多媒体创作软件实例2 图像处理软件
-多媒体创作软件实例3 动画制作软件
-多媒体创作软件实例4 视频处理软件
-4-8 常用软件介绍-网页制作软件
--第四章 习题8
-第四章 章测试
-5-1 操作系统概述
--第五章 习题1
--操作系统
--操作系统分类
--操作系统管理
-5-2 Windows 7基本操作
--第五章 习题2
-5-3 Windows 7文件管理
--第五章 习题3
-5-4 Windows 7程序管理
--第五章 习题4
-5-5 Windows 7系统安全
--第五章 习题5
--操作系统安全
-5-6 Windows 7计算机管理
--第五章 习题6
-5-7 Dos命令
--第五章 习题7
--dos
-5-8 Windows 7常用软件
--第五章 习题8
-5-9 Linux操作系统
--第五章 习题9
--Linux
-5-10 手机操作系统
--第五章 习题10
-5-11 虚拟机及Vmware介绍
--第五章 习题11
--虚拟机
--虚拟机使用
-第五章 章测试
-6-1 算法基础
--6-1 算法基础
--第六章 习题1
-6-2 程序设计语言分类
--第六章 习题2
-6-3 程序设计过程
--第六章 习题3
-6-4 程序设计方法
--第六章 习题4
-6-5 程序设计语言基本要素(一)
--第六章 习题5
-6-6 程序设计语言基本要素(二)
--第六章 习题6
-6-7 Python简介及编程环境配置
--第六章 习题7
-6-8 程序设计应用举例
--第六章 习题8
-第六章 章测验
-7-1 数据库技术概述
--第七章 习题1
--信息和数据
-7-2 数据库管理系统
--第七章 习题2
--数据库管理系统
-7-3 数据库系统的组成与功能
--第七章 习题3
--独立性
--数据库系统分类
-7-4 关系模型的数据结构
--第七章 习题4
--E-R图
--三级模式结构
-7-5 关系模型的数据操作及完整性约束
--第七章 习题5
--关系模型
--数据库范式
--完整性约束
-7-6 Access数据库的建立
--第七章 习题6
--Access
-7-7 Access的数据查询
--第七章 习题7
-第七章 章测试
-8-1计算机网络概述
--第八章 习题1
--定义
-8-2网络分类
--8-2网络分类
--第八章 习题2
--分类
-8-3数据传输
--8-3数据传输
--第八章 习题3
--数据传输
-8-4网络拓扑结构
--第八章 习题4
--网络拓扑结构
-8-5网络体系结构
--第八章 习题5
--网络体系结构
-8-6网络互连
--8-6网络互连
--第八章 习题6
--网络互连
-8-7Internet基础:TCP╱IP协议结构
--第八章 习题7
--TCP/IP模型
--IP协议
-8-8Internet基础:IP地址
--第八章 习题8
--IP地址
-8-9Internet基础:域名系统
--第八章 习题9
--域名
-8-10Internet基础:Internet的基本服务
--8-10Internet基础:Internet的基本服务
--第八章 习题10
--Internet
-8-11Internet基础:Internet的接入
--第八章 习题11
-第八章 章测试
-9-1信息安全的基本概念
--第九章 习题1
--信息安全的CIA
--攻击与防御
-9-2 密码技术及应用
--第九章 习题2
--数字签名
-9-3防火墙技术
--9-3防火墙技术
--第九章 习题3
--防火墙的分类
--防火墙的基本特性
-9-4恶意软件
--9-4恶意软件
--第九章 习题4
--恶意软件类型
-9-5入侵检测技术
--第九章 习题5
--入侵检测概念原理
--入侵检测分类
-第九章 章测试
-10-1 云计算
--10-1 云计算
--第十章 习题1
-10-2大数据
--10-2大数据
--第十章 习题2
-10-3物联网
--10-3物联网
--第十章 习题3
-10-4机器学习
--10-4机器学习
--第十章 习题4
-10-5人工智能
--10-5人工智能
--第十章 习题5
-10-6物联网应用
-第十章 章测验
-1-0 准备步骤
--1-0 准备步骤
-1-1 台式机组装
-1-2 笔记本电脑组装
-3-1 启动和退出Word
-3-2 创建、编辑和保存Word文档
-3-3 封面的制作
--封面的制作-1
--封面的制作-2
--封面的制作-3
--封面的制作-4
-3-4 长文档编辑
--长文档编辑
-3-5 页面插入与目录
-3-6 页眉页脚与页码
-3-7 完成文档
-4-1 创建和编辑Excel表格
-4-2 简单公式和函数
-4-3 插入图表
--4-3 插入图表
-4-4 电子表格中数据的管理
-5-1 创建演示文稿与添加幻灯片
-5-2 编辑演示文稿
-5-3 设置演示文稿外观
-5-4 交互式演示文稿的设置
-5-5 设置演示文稿动画和音乐
-5-6 演示文稿放映
-6-1 图像的修饰
-6-2 淡黄色的记忆
-6-3 心形贺卡
--6-3 心形贺卡
-6-4 燃烧字
--6-4 燃烧字
-6-5 闻味的小狗狗
-6-6 换脸
--6-6 换脸
-7-1 逐帧动画的制作
-7-2 动作补间动画的制作
-7-3 形状补间动画的制作
-8-1 网站制作前期工作
-8-2 在Dreamweaver中建立和管理站点
-8-3设计制作网站主页
-8-4 制作网站导航栏
-8-5 修饰美化页面
-8-6 填写页面内容
-8-7 设计制作次级页面并建立链接
-9-1 Python的下载
-9-2 Python的安装
-9-3 IDLE的使用
-9-4 求矩形的周长和面积
-9-5 求三角形的面积
-9-6 求素数
--9-6 求素数
-10-1 数据库的建立
-10-2 SQL的应用
-11-1 Packet Tracer简介及下载方法
-11-2 有线网络的组网与配置
-11-3 无线网络的组网及无线路由配置
-12 无线网络安全配置