章节目录
一、计算机表示的单位
1.比特(b)
:即二进制位,是组成数字信息的最小单位
,用“0”或“1”表示。
2.字节(B)
:是计算机存储的基本单位
:1B=8b。
3.内存中各单位之间是2^10B, 外存各单位之间是10^3B。
1KB=2^10B , 1MB=2^20B , 1GB=2^30B
4.采用二进制的主要原因:
技术实现简单
- 简化运算规则
- 符合逻辑运算
二、进制转换(重难点–基本必考)
1.各种进制
十进制 | 逢十进一 | 尾部加‘D’或缺省 | 基数是10,每位出现的数在0~9之间 |
---|---|---|---|
二进制 | 逢二进一 | 尾部加‘B’ | 基数是2,每位出现的数在0~1之间 |
八进制 | 逢八进一 | 尾部加‘Q’ | 基数是8,每位出现的数在0~7之间 |
十六进制 | 逢十六进一 | 尾部加‘H’ | 基数是16,每位出现的数在0~9 ,A~F之间 (A表示10,依次往下) |
其中还涉及二进制的逻辑运算。
- 逻辑
乘法(与
运算): 符号是倒过来的V,全1为1,否则为0。 - 逻辑
加法(或
运算): 符号是V,全0为0,否则为1。 - 逻辑
否定(非
运算):按位运算, 1取反为0,0取反为1。 异或
:相同为0,相异为1。同或
:相同为1,相异为0。
2.二进制转十进制
举例子:11010.1011B
3.八进制转二进制/二进制转八进制
方法其实是一样的,主要利用1位八进制与3位二进制的转换关系。
八进制数 | 二进制数 |
---|---|
0 | 000 |
1 | 001 |
2 | 010 |
3 | 011 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
注意:整数部分不满3位,高位补0,凑满3位;小鼠部分不满三位,低位补0,凑满三位。
举例子:11010.1011B
=011 010. 101 100 B
=32.54Q
4.十六进制转二进制/二进制转十六进制
方法其实是一样的,主要利用1位十六进制与4位二进制的转换关系。
十六进制数 | 二进制数 | 十六进制数 | 二进制数 |
---|---|---|---|
0 | 0000 | 8 | 1000 |
1 | 0001 | 9 | 1001 |
2 | 0010 | A | 1010 |
3 | 0011 | B | 1011 |
4 | 0100 | C | 1100 |
5 | 0101 | D | 1101 |
6 | 0110 | E | 1110 |
7 | 0111 | F | 1111 |
举例子:11010.1011B
=0001 1010.1011B
=1A.BH
5.BCD编码
其实BCD就是以四位二进制表示0~9这10个数码,见上方表格,表示不了A ~ F 。
三、无符号整数和有符号整数的表示
1.无符号整数的表示范围:0~2^n-1(2的n次方减1)。
2.有符号整数的表示,概念会多很多,考点也比较多,要注意。
1.原码,补码,反码
1.符号位用最高位
表示,其中 ‘0’为正号,‘1’为负号。
2.原码表示范围:-2^(n-1)+1 ~ 2^(n-1)-1.
补码表示范围:-2^(n-1) ~ 2^(n-1)-1
由此可知,在位数相同的情况下,补码的表示范围比原码的表示范围多一个
。
3.0在补码中只有一种表示方式。
2.计算
1.原码转补码有一个简单方法
原本公式是原码除符号位不变以外,各位取反,最后加一。
实际运算的时候可以,符号位不变,找到一个离符号位最远的1,最远的1之后的数字不管它,然后,符号位和1之间的数取反,求出的结果就是补码。
举例子:
原码:11010100
补码:1
0101100
2.有符号最大负数
求解过程,先把符号位排上1,然后根据题目中1的个数,先排剩下的1,再排剩下的0,得到其补码,然后看清楚题目问什么,如果求十进制数这种,就得先求原码再往下求。
3.有符号最大正数
求解过程:0排首位,然后根据题目中0的个数,先排剩下的0,再排剩下的1,得到其补码,然后看清楚题目问什么,如果求十进制数这种,就得先求原码再往下求。
注意:正数的补码和原码是其本身,不用颠来倒去的求,反而求错,要注意。一般出题会给一个正数,一个负数,让我们求。
4.IEEE 745那块我不会,学了很久不理解,有好心人可以教教我。考试好像也不怎么考。
3.关于溢出问题
我的记忆方法是:同号相减,异号相加不会发生溢出,然后无符号运算和逻辑运算也不会,其他可能会溢出。(其实正常记同号相加,异号相减溢出也行)。
4.关于左移和右移
其实理论上应该会在实操那块考,但浅提一下。
左移:
左移运算符是<<
。
左移操作将一个数的所有二进制位向左移动指定的位数。
对于无符号整数,左移相当于乘以2的指定次方。
右移:
右移运算符是>>
。
右移操作将一个数的所有二进制位向右移动指定的位数。
对于无符号整数,右移相当于除以2的指定次方,低位移出去的位全部丢弃。