计算机以二进制表示和存储信息。
计算机内部数据的存储,根据数据的特性分为:
1、 无符号整数
2、 有符号整数(补码)
3、 浮点数
明确的关键点:
1、 计算机内部是通过有限的位编码一个数字,因此存在“溢出”现象,因为表示的范围是有限的。
2、 大多数计算机使用8位的块,做为最小的可寻址的存储器单位。
3、不同的数据类型,数据大小是不一样的。(准确的要依赖机器和编译器)。
4、对象的地址使用字节序列中的最小的地址。(网络传输、跨平台时考虑字节序的问题)
一、无符号整数
基本的“二进制”表示。
二、有符号整数 --- 补码 【同余】
使用补码,减法也可按加法来处理(ALU不用去实现减法运算)。(两个用补码表示的数据相加时候,将符号位和其它位统一处理,如果最高位(符号位)有进位,则进位被舍弃。)
最高有效位为符号位,1负数,0正数。(Java只支持有符号整数)
三、浮点数
划分为三个域:1.符号 2.有效位(二进制小数) 3. 指数位(2的幂,对浮点数加权)
单精度:1 = 23 =8 ; 双精度 :1 = 52 = 11。
特性:精度有限,浮点运算是不可结合和交换的。
四、“模”概念
“模”是指一个计量系统的计数范围.如时钟等.计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”.例如:
时钟的计量范围是0~11,模=12.
表示n位的计算机计量范围是0~2(n)-1,模=2(n).【注:n表示指数】
“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数.任何有模的计量器,均可化减法为加法运算. 例如: 假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:
1、倒拨4小时,即:10-4=6
2、顺拨8小时:10+8=12+6=6
在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替.
对“模”而言,8和4互为补数.实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特性.共同的特点是两者相加等于模.
对于计算机,其概念和方法完全一样.n位计算机,设n=8, 所能表示的最大数是11111111,若再加1称为100000000(9位),但因只有8位,最高位1自然丢失.又回了00000000,所以8位二进制系统的模为2(8). 在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了.把补数用到计算机对数的处理上,就是补码。