计算机中数的存储

1、计算机的存储单元

计算机内有很多存储单元,计算机用这些存储单元存储数据,一个存储单元可以存储一个八位的二进制数,一个存储单元又称作一个字节,记作1B。计算机的处理器一次可以处理的字节数(存储单元数)称作该计算机的字长,按计算机的字长划分,微型计算机可分为8位机、16位机、32位机和64位机,现在的主流机型是64位机。即计算机中的处理器一次可以处理64位二进制数,也就是一次可以处理8个字节的二进制数。

我们可以用一个存储单元来存储一个数据,也可以用多个存储单元联合起来存储一个精确度更高的数据,使用两个单元、四个单元、八个单元存储数据的方法与使用一个存储单元存储数据的方法完全相同,只是位数不同而已,使用多个存储单元存储数据时需将各单元连接起来使用,从而使存储的数据的数值范围更大。为了使叙述方便简洁,下面我们介绍用一个存储单元存储数据的方法。

2、计算机中数值的存储

在计算机中要存储有符号的数,则数值的正负号也只能用0和1表示。我们约定用八位中的最高位表示数的符号,比如我们要在存储单元中存储数值-35,首先要将35写成七位二进制数。35写成二进制数是100011B,不足七位,前面可以补0凑成七位,结果是0100011B。在最高位再添加1作为负号,于是-35在存储单元中存储的形式是:

同理,如果要存储正数35,则最高位应为0,结果如下图所示。

实际上在计算机中数有三种表示方法,分别是原码表示、反码表示和补码表示:

1)数的原码表示法

将一个数值写成二进制后再在符号位添加1或0作为符号,即为该数的原码,比如上面的10100011和00100011,就是-35和35两个数的原码,最左端的1或0均表示该数的符号。

2)数的反码表示法

正数的反码和原码相同,负数的反码是符号位为1,其余各位为原码的相反数,即原来为0的要写为1,原来为1的要写为0,比如35,其反码表示法仍和原码相同,即可表示为:

而-35的反码则应表示如下:

其中最高位的1表示负号,其余各位原来是1的变为0,原来是0的变为1

3)补码表示法

正数的补码表示法和和原码表示方法相同,负数的补码表示法是:符号位为1,其余各位为反码+1,比如35,其补码表示法仍和原码相同,即可表示为:

但-35的补码应表示为:

该结果显然是在上面的反码未位加了1后得到的。

引入了反码和补码的概念后,计算机中数的运算可得到简化:

实际上计算机中的数值是按补码存储的。下面就来说明这样存储数据的好处。

4)计算机中数的加减运算

【例题1】写出35和-1在计算机中的补码表示方法,并完成35-1的运算。

由前面的例子已知35的八位补码是

补码是在反码的未位加1得到的数。

下面完成35-1的运算,35-1的运算实际是两个数的补码相加的运算。将两个数补码直接相加,得00100010,参见下图。因为最高位是0,所以为正数,其后七位可直接转换为十进制数,转换后为34。这恰是正确的计算结果。

【例题2】完成-35-1的运算。

由前面的例子已知-35和-1的八位补码分别是

由于计算结果的最高位是1,所以结果应为负数,最高位后的七位为负数的补码,还需求出原码,才能得到结果,由补码求原码的方法是再求补码(即再取反码并加1),下面由补码求原码(注意:不含符号位)。

上面的36即为由补码1011100求得的原码,再添加负号即为本题的结果。

从上面的例子可以看出负数用补码表示后,二进制数的加法和减法得到了统一,即通过加法运算就可以解决减法的问题。

我们上面求补码的过程虽然有些麻烦,但实际这一过程是由计算机自动完成的,计算机中用补码表示数的优越性至此一目了然。即加法和减法被统一成了同一种运算。

5)计算机中整数的表示范围

用原码表示时,用一个字节可以存储的有符号数

最大的数是:01111111,最高位表示符号,其余七位转换为十进制数后为127,即27-1。

最小的数是:11111111,最高位是符号,其余七位转换为十进制数后是127,即-127,

即用原码表示的数的范围是-127至+127,其中0被表示了两次,00000000和10000000都表示数值0,这是这种表示方法的缺点之一。

用补码表示时:

最大值是正值,与用原码表示时相同,也是01111111,而最小值为10000000,对其中符号后的七位取反加1后得到128,即最小数是-128。用补码表示的数的范围是-128至+127,比原码表示的范围多1,因为原码中0被表示了两次。

如果用计算机表示无符号数(将最高位也看作数值),则最大值是11111111,即255,最小数是00000000,即0,表示的数的范围是0至255。

需要注意,计算机中数值计算时一定不要超过可以表示的数的范围,否则计算结果就会出现错误。

6)

计算机中的乘除运算

计算机中的乘法运算可以通过左移位和加法来实现。

【例题3】计算17X4

首先将第一个数用八位二进制补码表示:

17补码为:00010001

将上面的数值左多两位,为01000100,转换为十进制后即为68.,这里通过两次左移即实现了二进制数的乘法运算。

【例题4】计算17X5

首先将第一个数用八位二进制补码表示:

17补码为:00010001

将该数左移两位,再和原数相加

转换为十进制数为85,即17乘以5等于85

【例题5】计算-17X4

首先将第一个数用八位二进制补码表示:

-17补码为:11101111

左移两位后为10111100,结果仍为负数,取反加1后求得原码为-68。

有人可能会问如果向左移三位,最高位就变成0了,不就错了吗,是的,这时因为左移三位(相当于-17X8),其结果就超出8位数表示的范围了。我们讨论的的前提是计算结果不能超出8位二进制数表示的范围。在计算机中实际是使用32位甚至64位表示整数,当然其范围比此处讨论的数要大的多。

从上面的例子不难看出,在计算机中只用向左移位和相加就可实现乘法运算。

同理用向右移位和相减也能实现除法运算,只不过减法实际也是由加法实现的。

通过前面的讨论可以得到结论,计算机中使用二进制数不仅容易实现,而且也容易简化计算过程,全部四则运算都可由加运算和移位运算来解决。实际上在高等数学中,任何复杂的单自变量函数都可以用四则运算来无限逼近(使用泰勒展开),实际上也就是说任何复杂的运算在计算机中都可由二进制的加运算和移位运算来实现。而二进制数的加法只需使用下面的三条规则就足够了:

0+0=0

0+1=1

1+1=10

实际上计算机中的数还有定点数和浮点数之分,前面讨论的数实际是假设小数点固定在一个字节的最右端,因此表示的是定点整数,如果我们认为小数点在一个字节的最左侧,则上面讨论的就是定点小数。我们也可以用另一种形式来表示数,比如数值“1234”可以写成0.1234乘以10的4次方,而数值23.546可以表示为0.23546乘以10的-2次方,这样我们就可以将一个数分为两部分来表示,一部分称为尾数,一部分称为指数。这样不仅能表示整数,而且也能表示小数,当然一个字节也需要分为两部分,比如用前面三位表示一个数的指数,后面五位表示一个数的尾数,这样表示的数的范围可以更大,这样表示的数我们称之为浮点数。

无符号数在计算机中怎么存储,计算机中数的存储相关推荐

  1. 是用来将汉字输入到计算机中的一组,计算机中常见的汉字编码有哪些?

    2017-08-06 计算机中的编码是什么样的? (1)二进制.十进制和十六进制等常用数制及其相互转换: 由于计算机的存储器和寄存器是两态部件,所以各种信息在计算机中是以二进制的方式存储和计算的.数制 ...

  2. 计算机中imb二进制数,计算机基础知识总述.doc

    文档介绍: 计算机基础知识汇总 1.在微型计算机中,应用最普遍的字符编码是 A) ASCII 码 B)BCD 码 C)汉字编码 D) 补码 2 .与十进制数 100 等值的二进制数是 A)001001 ...

  3. 计算机中减法英语,计算机中加减乘除叫什么键

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 计算机中加减乘除叫运算功能键,计算器的按键分为:有数字键,功能键,运算键. 电子计算机(electronic computer)通 ...

  4. 中断原理在计算机中的应用,计算机组成原理期末考试简答题重点

    6.DMA方式和程序中断方式比较有什么不同? DMA:采用内在和外设直接数据交换的方式,只有当有一段数据传送时才会请求CPU中断,减少了CPU的负担. 程序中断:只适用于简单的少量外设的计算机系统,会 ...

  5. java中有符号数和无符号数,C语言中无符号数和有符号数之间的运算

    C语言中有符号数和无符号数进行运算(包括逻辑运算和算术运算)默认会将有符号数看成无符号数进行运算,其中算术运算默认返回无符号数,逻辑运算当然是返回0或1了. unsigned int和int进行运算 ...

  6. 计算机中减法英语,计算机中的减法运算

    学习过计算机组成原理的同学可能知道,虽然我们可以让计算机做减法运算,但是计算机内部实际上是在做加法运算.因为加.减.乘.除四则运算都可以分解成加法运算和位移运算,而且计算机也只会处理这两种简单的运算, ...

  7. 计算机中的类型,计算机中各种件文的类型及其作用.doc

    计算机中各种件文的类型及其作用 1. "323" "H.323 Internet 电话技术" 2. "386" "虚拟设备驱动程序 ...

  8. alt在计算机中代表什么,计算机中alt+enter是什么快捷键

    计算机中alt+enter是什么快捷键 发布时间:2021-02-24 13:54:12 来源:亿速云 阅读:133 作者:小新 这篇文章将为大家详细讲解有关计算机中alt+enter是什么快捷键,小 ...

  9. 计算机中丢失vcru,计算机中丢失MSVCR120.dll

    我们在玩游戏或者看视频的时候,系统提示无法启动此程序,因为计算机中丢失MSVCR120.dll,尝试重新安装该程序以解决此问题.最简单的方法就是去下载该文件重新安装,具体的方法下面跟小编一起来看看吧. ...

  10. 地理在计算机中的应用,计算机在地理教学中应用形式之一:适合于大班教学的演示型...

    大班演示型是指地理教师在课堂上操作计算机,向学生展示教学内容.是一种面对全体学生的使用方式.计算机用作演示,主要优势是表现地理的动态过程,广东一位教师在来信反映使用计算机教学情况时说:"我们 ...

最新文章

  1. Linux KVM与Xen的性能比较
  2. Python学习笔记:入门(2)
  3. [res].xml格式
  4. 程序员 rs编码_为什么声明性编码使您成为更好的程序员
  5. Distances to Zero CodeForces - 803B (二分)
  6. Net中的AOP系列之《将AOP作为架构工具》
  7. 软件工程中需要学习和掌握的软件都有哪些_上海理工大学869软件工程考研经验...
  8. VMware虚拟机安装Win10系统后出现蓝屏
  9. ckPlayer播放器嵌入页面时报错CKobject is not defined解决方案
  10. 惠普HP compaq康柏系列 CQ40笔记本电脑拆机除尘
  11. 日系插画学习笔记(七):日系角色脸部画法-3表情
  12. 【matlab实现股票量化分析收盘价曲线作图-附源码】
  13. 4G模块发送短信流程
  14. 三森すずこさん コール・曲色 '17.04
  15. MySQL常用SQL(含复杂SQL查询)
  16. html自动缩放不出现滚动条,HTML页面缩小后显示滚动条的示例代码
  17. JAVAswing编写界面
  18. 网络营销推广效果在于流量精准度!你做到了吗?
  19. sql2008属于mysql吗_SQL Server 2008 属于( )数据库系统。
  20. 【go-jira】go根据jql获取jira数据,包括total及bug的平均未解决时间

热门文章

  1. SEO绝招,鲜为人知的SEO绝招有哪些?
  2. c语言位运算符的应用,c语言位运算(c语言位运算符的用法)
  3. MSET算法参差分析(二)
  4. 微软苏菲rt能装鸿蒙,评测人员称Surface RT设计漂亮但系统存不足
  5. 手机和电脑数据恢复,粉碎删除,电脑恢复文件教程
  6. html如何带入背景,html怎么导入背景图
  7. 内网渗透笔记——注册表自启动与msi提权
  8. w32dasm手动汇编教程:
  9. Kafka穿过网闸(物理层)进行消费
  10. keil编程问题 -- main.c(75): warning: #223-D: function “XXX“ declared implicitly