《Java16内存与数在内存中的表示简介.ppt》由会员分享,可在线阅读,更多相关《Java16内存与数在内存中的表示简介.ppt(17页珍藏版)》请在三一办公上搜索。
1、1,存储器与内存,存储器是计算机中用来存储程序和数据的部件,有了存储器的计算机才有记忆功能。存储器按用途可分为主存储器(内存)和辅助存储器(外存)。通常把要永久保存的或大量的数据存储在外存,而把一些临时的或少量的数据和程序放在内存,内存的好坏会直接影响电脑的运行速度,而外存的好坏会影响电脑的存取速度。一般程序,如WindowsXP操作系统、打字软件鹤游戏软件等,都是安装在硬盘等外存上的,运行之前必须将它们调入内存,才能真正发挥作用,调入的可能是一段文字或玩一个游戏程序。,2,存储器与内存,内存一般采用半导体存储单元,类型包括:随机存储器(RAM)。既可以从中读取数据,也可以写入数据。RAM是最
2、重要的存储器,目前有:S(synchronous)DRAM-同步动态随机存取存储器 DDR(DOUBLE DATA RATE)RAM-SDRAM的更新换代产品只读存储器(ROM)。Read Only Memory,只能读出,一般不能写入。ROM一般用于存放计算机的基本程序和数据,如BIOS ROM。高速缓存(CACHE)。位于CPU与内存之间,是一个读写速度比内存更快的存储器。当CPU向内存中写入或读出数据时,这个数据也被存储进高速缓冲存储器中。当CPU再次需要这些数据时,CPU就从高速缓冲存储器读取数据,而不是访问较慢的内存,只有当需要的数据在Cache中没有时,CPU才会再去读取内存中的数
3、据。,3,物理存储器和地址空间,物理存储器是指实际存在的具体存储器芯片。如主板上装插的内存条和装载有系统的BIOS的ROM芯片,显示卡上的显示RAM芯片和装载显示BIOS的ROM芯片,以及各种适配卡上的RAM芯片和ROM芯片都是物理存储器。存储地址空间是指对存储器编码(编码地址)的范围。所谓编码就是对每一个物理存储单元(一个字节)分配一个号码,通常叫作“编址”。分配一个号码给一个存储单元的目的是为了便于找到它,完成数据的读写,这就是所谓的“寻址”。物理存储器和存储地址空间都用B、KB、MB、GB来度量其容量大小,但它们的大小并不一定相等。对于386以上档次的微机,其地址总线为32位,因此地址空
4、间可达2的32次方,即4GB。但是我们常见的32位操作系统Windows xp却最多只能识别或者使用3.25G的内存。,4,三种地址,逻辑地址:程序设计语言的变量、函数等线性地址:为一个32位的无符号整数,可以表达高达4GB的地址。通常用16进制表示线性地址,其取值范围为0 x000000000 xffffffff。物理地址:是内存单元的实际地址,用于芯片级内存单元寻址。物理地址也由32位无符号整数表示。,5,计算机中的数的表示,计算机中的数是用二进制来表示的,数的符号也是用二进制表示的.机器数把一个数连同其符号在内在机器中的表示加以数值化,一般用最高有效位来表示数的符号,正数用0表示,负数用
5、1表示。机器数可以用不同的码制来表示,常用的有原码,补码和反码表示法。多数机器的整数采用补码表示法.原码 整数X的原码是指:其符号位的0或1表示X的正或负,其数值部分就是X绝对值的二进制表示。数0的原码不唯一,有“正零”和“负零”之分。反码 原码各位取反补码 反码加一,6,举例,例1:对于16位数-117D,写出的补码表示+117D可表示为 0000 0000 0111 0101 求反为 1111 1111 1000 1010 末位+1 1111 1111 1000 1011 十六进制表示 F F 8 B例2:已知X=6,Y=2,求X-Y例3:已知X=-19,Y=-30,求X+Y,7,计算机中
6、的数的表示,无符号整数 把最高位也作为数值处理,这样的数称为无符号整数.在计算机中最常用的无符号整数是表示地址的数字符 字符在计算机中用二进制数来表示,目前采用美国信息交换标准代码,即ASCII码表示.数的定点表示 把小数点约定在机器数的某一固定的位置上。如果小数点约定在符号位和数值的最高位之间,这时,所有参加运算的数的绝对值小于1,即为定点纯小数。如果小数点约定在数值的最低位之后,这时所有参加运算的数都是整数,即为定点整数。,8,计算机中的数的表示,数的浮点表示 机器数用阶码和尾数两部分表示,称为浮点表示法。一般规定,阶码是定点整数,尾数是定点纯小数。它们可采用原码,补码或其他编码表示。浮点
7、表示中,尾数的大小和正负决定了所表示的数的有效数字和正负,阶码的大小和正负决定了小数点的位置,因此机器数小数点的位置随阶码的变化而浮动。为了使运算中不丢失有效数字,提高运算精度,计算机中的浮点表示,通常采用改变阶码来达到规格化数的表示,这里,规格化数要求尾数值的最高位是1。,9,数制,在计算机中常用的数制有:十进制、二进制、八进制和十六进制。十进制数(Decimal)由09十个基本数字组成,按“逢十进一”的规则进行的.二进制数(Binary)由两个基本数字0,1组成,逢二进一。加法和乘法运算如下:0+0=0 0+1=1+0=1 1+1=10 00=0 01=10=0 11=1八进制(Octal
8、)有数码0、1、2、3、4、5、6、7十六进制数(Hexadecimal)有数码09、AF,10,常用流程图符号,11,算法与程序,开始,输入,处理,输出,结束,输入:Scanner的nextInt处理:各种表达式计算,处理,处理,.,算法:解决问题的方案,12,举例1,编程将华氏温度值转换为摄氏温度值,公式如下。其中C表示摄氏温度,F表示华氏温度。,13,开始,键盘输入F,C=5*(F-32)/9,显示输出C,结束,14,举例2,给定两个正整数p和q,求其最大公因数?,15,求最大公因数算法,古希腊数学家欧几里德给出了一个著名的算法:,步骤1:任意输入两个数放入p和q中 步骤2:如果p q,
9、交换p 和q步骤3:计算 p 和q 的余数r步骤4:令p=q,q=r步骤5:如果r=0,则执行步骤6,否则执行步骤3步骤6:p就是所求的结果,输出结果p,16,算法与流程图,开始,键盘输入p和q,pq,r=p;p=q;q=r,成立,显示输出p,结束,r=p除以q的余数,r=0,p=q;q=r,成立,不成立,步骤1:任意输入两个数放入p和q中 步骤2:如果p q,交换p 和q步骤3:计算 p 和q 的余数r步骤4:令p=q,q=r步骤5:如果r=0,则执行步骤6,否则执行步骤3步骤6:p就是所求的结果,输出结果p,不成立,17,程序,int p,q,r;/定义三个整数变量 Scanner sc=new Scanner(System.in);p=sc.nextInt();/输入正整数P q=sc.nextInt();/输入正整数Q if(p q)/比较p和q大小 r=p;p=q;q=r;do r=p%q;/计算余数 p=q;q=r;while(r!=0);System.out.println(p);/输出结果,