数据的表示
考点一:进制转换
四种常见进制形式
十进制D: 都是以0-9这九个数字组成,不能以0开头,没有任何说明一般都是十进制。
二进制B: 由0和1两个数字组成,逢2进1,用字符B来表示。
八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始。
十六进制H:由0-9和A-F组成。为了区分于其他数字的区别,一般都是以0x开始,H结尾。
数码
表示进制的字符,例如二进制是用0和1来表示
基数
多少进制,基数就是多少,是用来计算大小的标准
位权
是用来计算大小的为标准,例如:数字19,使用10进制来表示为:
1
∗
1
0
1
1*10^1
1∗101+
9
∗
1
0
0
9*10^0
9∗100 = 10+9 = 19
公式为:数码(每个位置上的数) * 位权(基数的K次方) 22(n-1)
数字 | 按权展开 |
---|---|
10100.01B | 1* 2 4 2^4 24+0+1* 2 2 2^2 22+0+0+0+1*2-2 |
辅助理解:
10100.01 先转为10进制 为:10000+100+0.01
表示为:1✖104+1✖102+1✖10-2
带入基数所得为:1✖24+1✖22+1✖2-2
进制转换
十进制转为R进制
一般使用短除法也叫除基取余法,直到商为0为止
数字 | 步骤 | 结果(转为二进制) |
---|---|---|
94 | 94/2结果47余数为0 | 0 |
47 | 47/2结果23余数为11 | 1 |
23 | 23/2=结果11余数为1 | 1 |
11 | 11/2结果5余数为1 | 1 |
5 | 5/2结果2余数为1 | 1 |
2 | 2/2结果1余数为0 | 0 |
1 | 1/2/2结果0余数为 | 1 |
所以94转为二进制结果为:1011110
拓展部分:94转为16进制
数字 | 步骤 | 结果(转为十六进制) |
---|---|---|
94 | 94/16结果5余数为14 | 14(E) |
14 | 14/16结果0余数为5 | 5 |
故:结果为5E
解释:16数码为0-9,A,B,C,D,E,F;14对应的的为:E
十进制速转二进制(减法)
进制速转表格
二进制 | 十进制 |
---|---|
20 | 0 |
21 | 2 |
22 | 4 |
23 | 8 |
24 | 16 |
25 | 32 |
26 | 64 |
27 | 128 |
28 | 256 |
29 | 512 |
210 | 1024 |
还用94来举例:
数字 | 步骤 | 结果 |
---|---|---|
94 | 94-64结果30 | 26 |
30 | 30-16结果14 | 24 |
14 | 14-8结果6 | 23 |
6 | 6-4结果2 | 22 |
2 | 2-2结果0 | 21 |
结果为0 结束:
所以取值结果为: 1011110
二进制转为八进制十六进制
例如数字216 转为八进制为:
对应关系如下:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
我们先将216进行拆分,用下方表格表示:
2 | 1 | 6 |
---|---|---|
010 | 001 | 110 |
关系为一对三的关系,若位数不够,前面补零即可
所以216的二进制表示为:10001110
转为16进制同理
15对应的是1111,也就是F,也就是我们常说的8421 码
其对应关系为1对四的关系。
已知二进制为:10001110根据四位进行拆分得到的数字为:1000,1110分别对应的是:8和E 所以结果为8E
考点二:码制
数字分为整数和负,而在计算机当中,没有办法来表示正负号的,所以0表示正好,1表示负号。符号位拼接上数值的绝对值这种表示形式我们称之为源码
。牢记:计算机取固定长度!
原码
最高位是符号位,其余低位表示数值的绝对值。一般源码不直接参与运算,一般使用补码来进行加减运算。
反码
正数反码相同,负数的反码是其绝对值的按位置取反。(符号位不变)
补码(有人为定义)
正数补码与原码相同,负数的补码是其反码末位加1(符号位不变)
移码(有人为定义)
补码的符号位按位取反
原/反/补/移 的比较
概念 | 数值1 | 数值-1 | 数值1-1 | 是否直接参与运算 | |
---|---|---|---|---|---|
原码 | 最高位是符号位,其余低位表示数值的绝对值。一般源码不直接参与运算,一般使用补码来进行加减运算。 | 0000 0001 | 1000 0001 | 1000 0010 | 否 |
反码 | 正数反码相同,负数的反码是其绝对值的按位置取反。(符号位不变) | 0000 0001 | 1111 1110 | 1111 1111 | 否,一般需要过渡为反码 |
补码 | 正数补码与原码相同,负数的补码是其反码末位加1(符号位不变) | 0000 0001 | 1111 1111 | 0000 0000 | 是 |
移码 | 补码的符号位按位取反 | 1000 0001 | 0111 1111 | 1000 0000 | 是 |
考点三:浮点数的表示
定点整数/小数概念
小数点在有效数字末位后,例子:8
小数点在有效数字首位前,例子:0.8
定点整/小数速记公式
码制 | 定点整数 | 定点小数 | 数码个数 |
---|---|---|---|
原码 | -(2n-1) ~ +(2n-1) | -(1-2-(n-1)) ~ (1-2-(n-1)) | 2n-1 |
反码 | -(2n-1) ~ +(2n-1) | -(1-2-(n-1)) ~ (1-2-(n-1)) | 2n-1 |
补码 | -2n-1 ~ +(2n-1-1) | -1 ~ (1-2-(n-1)) | 2n |
移码 | -2n-1 ~ +(2n-1-1) | -1 ~ (1-2-(n-1)) | 2n |
例题解析:公式解析
假设n=3时,其中一位为符号位,所到的的所有结果是:
000 | 100 |
---|---|
001 | 101 |
010 | 110 |
011 | 111 |
共23种可能,也就是八种。第一列所表示的为整数,第二列为负数,也就是+3 ~ -3,也就是2n-1个。
例题解析:人为定义
假设:当n=8时,也就是共有8位数字时:
定点整数 | 定点整数 | |
---|---|---|
题目 | 当n=8时,也就是共有8位数字时 | 当n=8时,也就是共有8位数字时 |
步骤1 | 套用公式:-(2n-1) ~ +(2n-1) | 套用公式:-(1-2-(n-1)) ~ (1-2-(n-1)) |
步骤2 | 结果为:-127~ +127 | 结果为:-0.127 ~ 0.127 |
步骤3 | 转为二进制,原码为:1111 1111 ~ 0111 1111 | 转为二进制,原码为:-0.1111111 ~ 0.1111111 |
步骤4 | 补码为:1000 0000 ~ 0111 1111 | -1~ +0.111 1111 |
解释 | 其中128的补码为 1000 0000 是人为规定的 | 其中-1的补码为1000 0000,是人为定义的 |
往年真题
采用n位补码(包含一个符号位)表示数据,可以直接表示数值的( D
)。
A:2n B:-2n C:2n-1 D:-2n-1
如果“2X”的补码是“90H”,那么X的真值是( B
)。
A:72 B:-56 C:56 D:111
备注:H对应的是16进制,根据8421码得到结论为:8对应1000,所以9就是1001,0对应0000,若想把原码转为补码,需要反码做过度: 1、符号位取反,得到原码 2、反码+1,得到补码
浮点数
浮点数表示
N=尾数*基数指数
尾数:定点小数
指数:阶码 (定点整数)
判断大小
阶码:影响表示的范围
尾数:表示数字的有效精度,尾数越长,越精准
浮点数的运算过程
1、先对接(小向大对接)
2、尾数计算
3、结果格式化 0.5 ~ 1之间
特点:
1、一般尾数用补码
,阶码用移码
2、阶码的位数
决定数的表示范围
,位数越多范围越大
3、尾数的位数
决定数的有效精度
,位数越多精度越高
4、对阶时,小数向大数看齐
5、对阶是通过较小数的尾数右移实现的
往年真题
浮点数能够表示的数的范围是由其( B
)的位数决定的。
A、尾数
B、阶码
C、数符
D、阶符
以下关于两个浮点数相加运算的叙述中,正确的是 ( B
)
A、首先进行对阶,阶码大的向阶码小的对齐
B、首先进行对阶,阶码小的向阶码大的对齐
C、不需要对阶,直接将尾数相加
D、不需要对阶,直接将阶码相加
设16位浮点数,其中阶符1位、阶码值6位、数符1位、尾数8位。若阶码用移码表示,尾数用补码表示,则该浮点数所能表示的数值范围是( B
)
A、-264 ~ (1-2-8)264
B.-263 ~ (1-2-8)263
C.-(1-28)264 ~ (1-2-8)264
D.-(1-28)263 ~ (1-2-8)263
考点四:逻辑运算
关系运算符的优先级
优先级相同(高)
< (小于)
<= (小于或等于)
> (大于)
>= (大于或等于)
优先级相同(低)
== (等于)
!= (不等于)
- 关系运算符的优先级高于赋值运算符
- 关系运算符的优先级低于算数云算符
逻辑表达与运算
逻辑或(∥、+、U、V、OR):连接的两个逻辑值全0时才取0
逻辑与(&&、*、·、Λ、AND):连接的两个逻辑值全1时才取1
逻辑异或(⊕、XOR):连接的两个逻辑值不相同时才取1,相同则取0
逻辑非(!、﹃、~、NOT,-):将原逻辑值取反即可
逻辑运算真值表
A | B | !A | A+B | A*B | A⊕B |
---|---|---|---|---|---|
0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 1 | 1 | 0 |
逻辑运算符
&& (逻辑与):相当于其他语言中的AND
|| (逻辑或):相当于其他语言中的OR
!(逻辑非):相当于其他语言中的NOT
例:a&&b若a,b为真,则a&&b为真。
a||b,若a,b之一为真,则a||b为真。
!a,若a为真,则!a为假。
优先次序:
!
(非) > &&
(与)> ||
(或)
逻辑运算符中的&&
和||
低于关系运算符,!
高于算术运算符
因此运算符的优先顺序为:!
> 算术运算符
> 关系运算符
>&&
>||
> 赋值运算符
短路原则:
在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。
- a&&b&&c只有a为真时,才需要判断b的值,只有a和b都为真时,才需
要判断c的值 - a||b||c只要a为真,就不必判断b和c的值,只有a为假,才判断b。a和b
都为假才判断c
例题解析:短路原则
往年真题
要判断字长为16位的整数a的低四位是否全为0,则( A
)。
A、将a与0x000F进行"逻辑与
"运算,然后判断运算结果是否等于0
B、将a与0x000F进行"逻辑或
"运算,然后判断运算结果是否等于F
C、将a与0x000F进行"逻辑异或
"运算,然后判断运算结果是否等于0
D、将a与0x000F进行"逻辑与
"运算,然后判断运算结果是否等于F
对布尔表达式进行短路求值是指:无须对表达式中所有操作数或运算符进行计算就可确定表达式的值。对于表达式"a or ((c<d) and b)”,( B
) 时可进行短路计算。
A、d为true
B、a为true
C、b为true
D、c为true