跳至主要內容

bug君大约 4 分钟

title: 数据表示

1. 数据的表示

考点

  1. 进制转换
  2. 码制(原码/反码/补码/移码)
  3. 浮点数的表示
  4. 逻辑运算

1.1 进制转换

image-20230914220102341

  1. 按权展开法

    位权:小数点左边第一位是0,小数点右边第一位是 -1

    R进制转十进制使用按权展开法

    10100.01
    十进制计算:10000+100+0.01=1*10^4 + 1*10^2 + 1*10^-2
    二进制计算:1*2^4 + 1*2^2 + 1*2^-2
    604.01
    七进制:6*7^2 + 4*7^0 + 1*7^-2
    
  2. 短除法(除基取余法)

    除到商为0截至,取余从下往上取

    十进制转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
      5   余5
     转换后:5EH
    
  3. 减法

    十进制转二进制使用减法

    94转为二进制
    首先记住2^n的值,求2^n最大但不能超过被减数
    2^6=64 2^7=128  所以
    94-2^6=30	6	1
    30-2^4=14	4	1
    14-2^3=6	3	1
    6-2^2=2		2	1
    2-2^1=0		1	1
    
    有位权就是1,没有位权就是0
    6	5	4	3	2	1	0
    1	0	1	1	1	1	0
    结果:1011110
    
  4. 二进制转换八进制与十六进制

    八进制:0		1		2		3		4		5		6		7	
    二进制:000		001		010		011		100		101		110		111	   	
    

    二进制转八进制:

    将二进制三位分割,从最右边开始分割,左边不够三位补0

    11011 分割---> 11 011 --->补0 011 011 --->转为八进制 33

八进制转换二进制:一位 对 三位 4 2 1

十六进制转换二进制:一位 对 四位8 4 2 1

十六进制:0		1		2		3		4		5		6		7		8		9		A		B
二进制:0000	0001	0010	0011	0100	0101	0110	0111	1000	1001	1010   1011	

1.2 码制

1.2.1 码制计算

最高位为符号位,0表示正数,1表示负数

计算机运算中,一般不用原码参与运算,一般使用补码运算

image-20230914232309188

原码:最高位是符号位,其余低位表示数值的绝对值

反码:正数的反码与原码相同,负数的反码是其绝对值按位取反

补码:正数的补码与原码相同,负数的补码是其反码末为加1(符号位不变

移码:补码的符号位按位取反

1-1=1+(-1)

	源码			反码		补码			移码
+7:	0000 0111	0000 0111	0000 0111	1000 0111
-7:	1000 0111	1111 1000	1111 1001	0111 1001
1:  0000 0001	0000 0001   0000 0001	1000 0001
-1: 1000 0001  1111 1110    1111 1111 	0111 1111
1-1: 1000 0010  1111 1111    0000 0000	 1000 0000

1.2.2 定点正数、定点小数

image-20230914235915197

练习:

  1. image-20230915000239785

    100 人为规定 -4

image-20230915000848569

补码求反码求原码

注意符号位

1.3 浮点数表示

N=尾数*基数^指数

运算过程:

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

特点:

  1. 一般尾数用补码,阶码用移码
  2. 阶码的位数决定数的表示范围,位数越多范围越大
  3. 尾数的位数决定数的有效精度,位数越多精度越高
  4. 对阶时,小数向大数看齐
  5. 对阶是通过较小数的尾数右移实现的
计算1.25*10^6 + 1.255*10^10
步骤:
	1.对阶:低阶向高阶对齐
	2.尾数计算
	3.结果格式化
1.25*10^6=0.000125*10^10
0.000125*10^10  +
1.255 *10 ^10
=1.255125*10^10

练习:

  1. 浮点数能够表示的数的范围是由(阶码)的位数决定的。

    尾数:有效精度

    阶符:阶码的符号位,决定是整数还是小数

    数符:尾数部分的符号位

    阶符:10^-2 --> 1/100 
    数符:-1.25*10^2
    
  2. image-20230915234135708

    image-20230915234558056

1.4 逻辑运算

1.4.1 逻辑运算符

关系运算符:
> >= < <=				优先级相同(高)
赋值符号:
==	等于 	!= 不等于		优先级相同(低)
算术运算符:
+ - * /

关系运算符的优先级低于算术运算符

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

逻辑变量之间的运算称为逻辑运算,二进制1 0 在逻辑上可以代表 真 假

image-20230923163711944

真值表:

image-20230923163901301

逻辑运算符

image-20230923164043511

1.4.2 优先顺序

image-20230923164206614

image-20230923164338414

1.4.3 短路原则

&&、||

image-20230923164527754

上次编辑于: