软件设计师1--数据的表示

本文详细讲解了软件设计师必备的知识点,包括整型的四种进制转换方法、码制(原码、反码、补码、移码)、浮点数的表示与运算,以及逻辑运算符、关系运算符的优先级和短路原则。通过实例和公式帮助读者掌握数据的表示与计算技巧。
摘要由CSDN通过智能技术生成

考点1:进制转换

整型的4种进制形式

  1. 十进制: 都是以0-9这九个数字组成,不能以0开头。
  2. 二进制: 由0和1两个数字组成。
  3. 八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始。
  4. 十六进制:由0-9和A-F组成。为了区分于其他数字的区别,开头都是以0x开始。

进制转换速记表格

十进制二进制八进制十六进制
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F
进制码数基数位权
十进制(D)0,1,2,3,4,5,6,7,8,91010k
二进制(B)0,122k
十六进制(H)0~9,A,B,C,D,E,F1616k

数据的表示-按权展开法

  • R进制转十进制使用按权展开法,其具体操作方式为:将R进制位的每一位数值用Rk形式表示,即幂的底数是R,指数为k,k与该位和小数点之间的距离有关。当该位位于小数点左边,k值是该位和小数点之间数码的个数,而当该位位于小数点右边,k值是负值,其绝对值是该位和小数点之间码数的个数加1.
  • 例如二进制10100.01=1×24+1×22+1×-2
  • 例如七进制604.01=6×72+4×70+1×7-2
    通俗点讲就是把10100.01看成十进制的数字,10100.01=1×104+1×102+1×-2=10000+100+0.01,如果是二进制就把10转换成2,如果是七进制就把10转换成7。

数据的表示-短除法

  • 十进制转R进制使用短除法(除基取余法)。
    例如将94转换为二进制数。
    2|94 余0
    2|47 余1
    2|23 余1
    2|11 余1
    2|5   余1
    2|2   余0
    2|1   余1
       0
    得到结果为1011110,结果取余数从小往上取。
    例如将94转换为十六进制数。
    16|94 余14   十六进制中E代表14
    16|5   余5
         0
    得到结果为5E,结果取余数从小往上取。
    例如将5EH转为十进制数。
    5E=5×161+14×160

数据的表示-减法

  • 十进制转二进制使用减法。
    例如将94转换为二进制数。
    小于且离94最近的乘幂为64
    94-64=30(26=64)
    小于且离30最近的乘幂为16
    30-16=14(24=16)
    小于且离14最近的乘幂为8
    14-8=6(23=8)
    小于且离6最近的乘幂为4
    6-4=2(22=4)
    小于且离2最近的乘幂为2
    2-2=0(21=2)
    结束
位号6543210
取值1011110

得到结果为1011110

20=1     26=64
21=2     27=128
22=4     28=256
23=8     29=512
24=16      210=1024
25=32

数据的表示-进制转换

  • 二进制(10001110)转八进制与十六进制
二进制010 001 110
八进制2 1 6

二进制转八进制三位一转换,不足三位在前面补0

二进制010001110
十六进制8 E

二进制转十六进制四位一转换,不足四位在前面补0

考点2:码制(原码/反码/补码/移码)

数据的表示-原码/反码/补码/移码

  • 原码:最高位是符号位,其余低位表示数值的绝对值
  • 反码:正数的反码与原码相同,负数的反码是其绝对值按位取反(符号位不变)
  • 补码:整数的补码与原码相同,负数的补码是其反码末位加1(符号位不变)
  • 移码:补码的符号位按位取反
数值1数值-11-1
原码0000 00011000 00011000 0010
反码0000 00011111 11101111 1111
补码0000 00011111 11110000 0000
移码1000 00010111 11111000 0000

注:最高位0代表正数,最高位1代表负数,不足8位,补足8位

公式:

码制定点整数定点小数数码个数
原码-(2n-1-1)~+(2n-1-1)-(1-2-(n-1))~+(1-2-(n-1))2n-1
反码-(2n-1-1)~+(2n-1-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=8,也就是一共8个位数时:
原码:
-(2n-1-1)~+(2n-1-1)
-127~+127
转为二进制:
1111 1111 ~ 0111 1111
补码:
1000 0000 ~ 0111 1111
其中-128的补码为1000 0000是人为规定

定点小数
当n=8,也就是一共8个位数时:
原码:
-(1-2-(n-1))~+(1-2-(n-1)
即:-0.1111 111 ~ +0.111 1111
补码:
-1~+0.1111111
其中-1的补码为1000 0000是人为规定

例题:

1、采用n位补码(包含一个符号位)表示数据,可以直接表示数值(D
A、2n
B、-2n
C、2n-1
D、-2n-1

2、如果 “2X”的补码是“90H”,那么X的真值是(B
A、72
B、-56
C、56
D、111

考点3:浮点数的表示

浮点数的表示:

N = 尾数*基数指数

运算过程:

对阶>尾数计算>结果格式化

特点:

  1. 一般尾数用补码,阶码用移码
  2. 阶码的位数决定数的表示范围,位数越多范围越大
  3. 尾数的位数决定数的有效精度,位数越多精度越高
  4. 对阶时,小数向大数看齐
  5. 对阶是通过较小数的尾数右移实现的

例题:

1、1.25×106+1.255×1010=?
第一步:小数向大数看齐,把1.25×106转换成0.000125×1010
第二步:相加,0.000125×1010+1.255×1010
第三步:得1.25125×1010

2、浮点数能够表示数的范围是由其(B)的位数决定的。
A、尾数
B、阶码
C、数符
D、阶符

解析:尾数->有效精度 阶码->表示范围 数符->尾数部分的符号位 阶符->阶码的符号位

3、以下关于两个浮点数相加运算的叙述中,正确的是(B
A、首先进行对阶,阶码大的向阶码小的对齐
B、首先进行对阶,阶码小的向阶码大的对齐
C、不需要对阶,直接将尾数相加
D、不需要对阶,直接将阶码相加

4、设16位浮点数,其中阶符1位,阶码值6位,数符1位,尾数8位。若阶码用移码表示,尾数用补码表示,则该浮点数所能表示的数值范围是(B

A、-264~(1-2-8)264
B、-263~(1-2-8)263
C、-(1-2-8)264~(1-2-8)264
D、-(1-2-8)263~(1-2-8)263

考点4:逻辑运算

关系运算符及其优先次序

优先级相同(高)
<    (小于)
<=  (小于或等于)
>    (大于)
>=  (大于或等于)

优先级相同(低)
==  (等于)
!=   (不等于)

  • 关系运算符的优先级低于算数运算符
  • 关系运算符的优先级高于赋值运算符

逻辑运算符

逻辑变量之间的运算称为逻辑运算。二进制数1和0在逻辑上可以代表“真”与“假”。

逻辑或(||、+、U、V、OR):连接的两个逻辑值全0时才取0
逻辑与(&&、*、·、∩、Λ、AND):连接的两个逻辑值全1时才取1
逻辑异或(XOR、⊕):连接的两个逻辑值不相同时才取1,相同则取0
逻辑非(!、~、NOT、-、¬):将原逻辑值取反即可

真值表:描述一个逻辑表达式与其变量之间的关系

AB!AA+BA*BA⊕B
001000
011101
100101
110110

短路原则

在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。
(1)、a&&b&&c 只有a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值
(2)、a||b||c 只要a为真,就不必判断b和c的值,只有a为假,才判断b。a和b都为假才判断c

例题:

1、(m=a>b)&&(n=c>d)
当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“a>b”的值为0,因此m=0,而n=c>d不被执行,因此n的值不是0而仍保持原值1。

2、要判断字长为16位的整数a的低四位是否全为0,则(A)。
A、将a与0x000F进行“逻辑与”运算,然后判断运算结果是否等于0
B、将a与0x000F进行“逻辑或”运算,然后判断运算结果是否等于F
C、将a与0x000F进行“逻辑异或”运算,然后判断运算结果是否等于0
D、将a与0x000F进行“逻辑与”运算,然后判断运算结果是否等于F

3、对布尔表达式进行短路求值是指:无须对表达式中所有操作数或运算符进行计算就可确定表达式的值。对于表达式“a or ((c<d)and b)”,(B)时可进行短路计算。
A、d为true
B、a为true
C、b为true
D、c为true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值