计算机存储与进制转换
1. 计算机存储单元
- 位(bit): 二进制中表示一位,家里的宽带使用的单位。
- 字节(Byte):八个二进制位等于一字节,计算机数据存储的最小单位
- 千字节(KB) : 1024字节(Byte) = 1千字节(KB)
- 兆字节(MB): 1024千字节 (KB)=1兆字节 (MB)
- 还有GB TB EB ZB。。。
2. 进制转换
十进制
- 十进制数是由10个不同的符号(0123456789)组合表示的,用字符 D表示十进制或默认不写,这些符号处于十进制数中不同的位置,其权值各不相同,例如:
2886.32D= 2 * 10 3 ^3 3 + 8 * 10 2 ^2 2 + 8 * 10 1 ^1 1+6 * 10 0 ^0 0+3 * 10 − 1 ^{-1} −1+2 * 10 − 2 ^{-2} −2 - 在十进制数中,基数是10,它表示这种计数制一共使用10个不同的数字符号,计数规则 是逢十进一。
二进制
- 使用比特来表示的数称为二进制数,它的基数是2 用字符B表示 ,只使用两个不同的数字符号,即0和1,采用逢二进一的计数规则
二进制转十进制
(110.11) 2 _2 2 =1 * 2 2 ^2 2+1 * 2 1 ^1 1+ 0*2 0 ^0 0+1 * 2 − 1 ^{-1} −1 + 1 * 2 − 2 ^{-2} −2=(6.75) 10 _{10} 10
十进制转二进制:
十进制为整数:除以2逆序取余 。
十进制转二进制:
十进制为小数:乘以2顺序取整 (0.6875)
10
_{10}
10=(0.1011)
2
_2
2
二进制转八进制:
八进制数 | 二进制数 |
---|---|
0 | 000 |
1 | 001 |
2 | 010 |
3 | 011 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
如:
2 | 4 | . | 2 | 2 |
---|---|---|---|---|
010 | 100 | . | 010 | 010 |
二进制转十六进制:
十六进制数 | 二进制数 |
---|---|
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
A | 1010 |
B | 1011 |
C | 1100 |
D | 1101 |
E | 1110 |
F | 1111 |
如:
3 | F | . | A | 3 |
---|---|---|---|---|
0011 | 1111 | . | 1010 | 0011 |
3.信息在计算机中的表示
整数部分(定点数)
-
无符号整数:一般用于表示地址、索引等正整数,一般有8位、16位、32、64位 更多。。。
- 8个二进制位表示的正整数其取值范围是:0~255(2 8 ^8 8-1) 00000000表示0,11111111 表示255
- 16个二进制位表示的正整数其取值范围是:0~65535(2 16 ^{16} 16-1)
- n个二进制位表示的正整数其取值范围是0~2 n ^n n-1
-
带符号整数:使用第一个二进制位作为符号位,0表示正数,1表示负数,其他的则和来表示数值的大小
- 00101011=+43,10101011=-43
0.314*10 100 ^{100} 100
- 负整数在计算机内不采用原码而采用补码的方法进行表示。
小数部分(浮点数)
- 任何一个实数总可以表达成一个乘幂和一个纯小数之积。乘幂中的指数部分用来指出实数中小数点的位置,纯小数部分决定了有效数字(一般要求纯小数部分的首位为非0的有效数值),通常阶码位数越多,可表示的实数的范围越大,尾数越多,可表示的精度越高
- 在计算机中存储时也不会存储所有的位,只会存储0.314 与 阶码。
文字符号的表示
- 西文字符集由拉丁字母、数字、标点符号、特殊符号组成,目前计算机中使用最广泛的西文字符集及其编码是ASCII字符集和ASCII码,即美国标准信息交换码,它已被 国际标准化组织(ISO)批准为国际标准,在全世界通用,基本的ASCII 字符集共有128个字符,包括96个可打印字符(常用的字母、数字、标点符号等)和32个控制字符,每个字符使用7个二进制位编码(叫做标准ASCII码)。
- 虽然标准ASCII码是7位的编码,但由于字节是计算机中最基本的存储和处理单位,帮一般仍使用一个字节来存储一个ASCII码,每个字节中多余出来的一位(最高位)在计算机内部通常保持0,而在数据传输时可用作奇偶校验位。
- 计算机中每一个符号都是由编码数字表示,如ASCII中‘A’==65
4. 原码,反码、补码
- 正数的原码,反码,补码是一样的。
- 负数 -43
- 原码:十进制转为二进制 ************ 10101011 (第一位为1表示负数)
- 反码:符号位不变,原码每一位取反 11010100
- 补码:反码加1*************************11010101
- 8个二进制位补码表示取值范围是 -128~127(-2 7 ^7 7 ~ 2 7 ^7 7-1)
- 16个二进制位补码表示取值范围是 -32768~32767(-2 15 ^{15} 15 ~ 2 15 ^{15} 15-1)
- n个二进制位补码表示取值范围是 -2 n ^{n} n ~ 2 n ^{n} n-1
- 注意相同的位数,补码表示比原码表示多表示一个数。
- 计算机为什么使用补码进行计算,原因是为了让CPU的加法电路能处理减法,而不用重新设计减法电路 :
- 1-1=1+(-1)=0
- 注意正数三码是一样的,所以这里正数1的补码都是0000 0001
- 方案一(原码):(原码)0000 0001+(原码)1000 0001 = 1000 0010=-2 10 _{10} 10
- 方案二(反码):(反码)0000 0001+(反码)1111 1110 = (反)1111 1111=(原)1000 000 转为十进制 等于-0,也有可能会出现0000 0000 正0的情况,这两种情况在数学中是一样的,而反码表示这同一种情况用了两个方式,显然不合理。
- 方案三(补码):(补码)0000 0001+(补码)1111 1111 =(补码)0000 0000=原码 0000 0000 零的三码也是一样的
- 模,同余
- “模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。例如: 时钟的计量范围是0~11,模=12。表示n位的计算机计量范围是0~2(n)-1,模=2(n)。
- “模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。例如:假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨4小时,即:10-4=6;另一种是顺拨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。在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了。把补数用到计算机对数的处理上,就是补码。
- 8位二进制可以表示0-255,256种状态
有:255-3 =(255 + 253)mod 256
其中256为模,3与253同余。 - 补码的减法变加法 例子;
有 5-6=-1 下面是计算机使用二进制补码进行运算的过程
5的8位二进制是0000 0101 因为正数补码也是0000 0101
-6的8位二进制是1000 0110 取反加一得补码1111 1001
补码相加得1111 1111 减一取反得原码正是:1000 0001 转为十进制 得-1 - 8位二进制的取值范围是-128~127,其中的-128的原码是1000 0000补码也是1000 0000,补码表示0有两种方式0000 000与1000 0000,其中0000 0000 表示0 、1000 0000就表示-128。
5. 溢出
二进制位 1111 1111 +1=0000 0000 溢出了。