数据在计算机内存中的存储形式及实验验证.docx

数据在计算机内存中的存储形式及实验验证.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据在计算机内存中的存储形式及实验验证 1 数值型数据在计算机中的存储 存储概述 现将 C 语言作为例子, 其所有的基本数据类型, 均是符合人 类世界和自然世界的逻辑进行设计的。 在计算机中, 并没有 int 、 float 等等类型, 均是以 0 和 1 进行表示和描述的, 所有的数据 也是通过 0和 1在计算机中进行存储的。 理解数据的存储, 最根本的问题是要了解二进制, 即计算机 中数据存储的最基本形式。 进制,通俗讲是规定的进位的方法,对于任何一种的进制一X 进制,均是表示逢 X 进一位,例如十进制是逢十进一,八进制是 逢八进一,二进制是逢二进 1 一等等。对于不同的数据,有以下 方面的共同之处:( 1)每一种进制都有各自的符号集,例如二 进制的基本符号是 0和 1,十进制的基本符号是 0, 1, 2, 3, 4, 5, 6, 7, 8, 9等等;( 2)对于每一种进制,均使用位置表示 法,也就是说在在不同位置的数,其代表的值有所不同,例如, 对于十进制数 1234.55 ,可以表示为: 1234.55 = 1*10八3+2*10八2+3*10八1+4*10八0+5*10八 (-1 ) +5*10八(-2 )。对 于任何一种进制的数值,均可以按照不同的权值进行展开。 在人类的思维模式中, 十进制是普遍的使用方式, 计算机是 使用二进制的, 编程人员则需要与计算器直接进行交流。 举个例 子,现给一串二进制数“ 0000 1010 1111 0101 1000 1111 1111 1111”,任何人看到都会不知所云,如果直接使用十进制,则不 能准确的表达计算机的思维方式,因此出现了八进制和十六进 制,十六进制应用的更加广泛一些, 对于前文中提到的二进制数, 转换成八进制, 32./3 余 2,则还需要在前面加 0,但是转换成 十六进制, 32/4=8 ,可以直接写成十六进制对应的八个数值代表 的字符串,更加的简单和明了。 整数在计算机中的存储方式 在 32 位的计算机系统中,对于整数的范围是指,也即是说 -2147483648 ?+2147483647。 对于整数的原码, 是通过二进制的形式表现的, 二进制的最 高位是符号位,对于正数,符号位是 0,对于负数,符号位是 1。 数值X的原码记为[X]原,如果在计算机中的表示长度为 n,最 高位表示符号位, 其余位表示数值的绝对值。 原码在计算正数与 正数的时候, 不存在问题, 但是出现负数的时候, 则会出现问题。 数值X的反码记作[X]反,如果在计算机中的表示长度为 n, 最高位表示符号位, 正数的反码与原码相同, 负数的反码是原码 的绝对值按位取反得到。 数值X的补码记为[X]补,如果在计算机中的表示长度为 n, 最高位表示符号位,正数的补码与原码、反码相同,负数的补码 是其反码的末尾加 1。在计算机中表达带符号的整数时,一般均 采用补码,补码的引入,符号位不再约束计算,补码的最高位虽 然是 1,但是不再是符号位,而是普通的二进制位,可以参与运 举个例子,对于 +70和-70 ,其在 32位的计算机系统中,其 原码分别表示为: [+70] 原码 = 0000 0000 0000 0000 0000 0000 0100 0110 , [-70] 原码 = 1000 0000 0000 0000 0000 0000 0100 0110 。 对于整数 0,其原码有以下两个: [+0] 原码 = 0000 0000 0000 0000 0000 0000 0000 0000 , [-0] 原码 = 1000 0000 0000 0000 0000 0000 0000 0000 。 而对于整型类型的数,其在计算机内存中是以补码的方式进 行存储的。正数的补码就是自己的原码,而对于负数,其补码是 符号位之外的各位取反之后再加 1。举个例子,在 32位的计算 机系统中, +70和-70 的补码可以分别表示为: [+70] 补码 = 0000 0000 0000 0000 0000 0000 0100 0110 = 0x46, [-70] 补码 = 1000 0000 0000 0000 0000 0000 1011 1010 = 0xffffffba 。 通过编写C语言程序,可以验证正属于以及负整数在计算机 中是如何存储的,具体的程序设计如下: ?|include ”stdio.h ” main() { int i = -70 ; printf (“ %d在计算机内存储和计算形式为: %氷n”,i , ); printf (“ %d在计算机内存储和计算形式为: %X\n”,-i , -i ); } 在 Linux 系统中,通过 gcc 编译器,编译之后的结果显示为: -70 在计算机内存存

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档