第三周学习报告

第二章 信息的处理和表示 

2.1信息存储

1三种数字的表示

无符号:编码基于传统的二进制表示法,表示大于或者等于零的数字。

补码:编码是表示有符号整数的最常见的方式,有 符号整数就是可以为正或者为负的数字。

浮点数:编码是表示实数的科学记数法 的以二为基数的版本。

2.寻址和字节顺序

小端法和大端法

小端法:最低有效字节在前面——“高对高,低对低”

大端法:最高有效字节在前面

3逻辑运算和位运算

(1)逻辑运算符&& (与)||(或)!(非)

(2)位运算(按位布尔运算)所使用的符号&(AND)|(OR)~(NOT)^(EXCLUSIVE-OR)

掩码——用来选择性的屏蔽信号

掩码是一个位模式,表示从一个字中选出的位的集合。用位向量给集合编码,通过指定掩码来有选择的屏蔽或者不屏蔽一些信号,比如某一位位置上为1时,表明信号i是有效的;0表示该信号被屏蔽。

 

2.2整数表示

1.补码编码

补码的利用寄存器的长度是固定的特性简化数学运算。想想钟表,12-1 等价于 12 + 11,利用补码可以把数学运算统一成加法,只要一个加法器就可以实现所有的数学运算。

2.有符号数和无符号数的转换规则

无符号数:不存在正负之分,所有位都用来表示数的本身。 有符号数:最高位用来表示数的正负,最高位为1则表示负数,最高位为0则表示正数。 (1)无符号数转换为有符号数 看无符号数的最高位是否为1,如果不为1(即为0),则有符号数就直接等于无符号数;如果无符号数的最高位为1,则将无符号数取补码,得到的数就是有符号数。  (2)有符号数转换为无符号数  看有符号数的最高位是否为1,如果不为1(即为0),则无符号数就直接等于有符号数;如果有符号数的最高位为1,则将有符号数取补码,得到的数就是无符号数。

3.0扩展和符号扩展

扩展——从一个较小的数据类型转换为较大的数据类型,同时保持数值不变。

(1)符号扩展:当用更多的内存存储某一个有符号数时,由于符号位位于该数的第一位,扩展之后,符号位仍然需要位于第一位,所以,当扩展一个负数的时候需要将扩展的高位全赋为1;对于正数而言,符号扩展和零扩展是一样的,因为符号位就是0。

比如一个用一个8位二进制表示-1,则是10000001

如果把这个书用16位二进制表示时,则为11111111 10000001 高位全都是1,这个叫做符号扩展,主要用于对其操作数。

(2)零扩展就是全补零。不论其符号位是多少,高8位全都补0.

能过上面的定义可以看出在C++中,如果把一个char向一个整形转换的时候,就会存在着这个问题

如果你想得到一个正数,那么如果一个字符的ASCII码值是小于零的,而直接用(int)c进行强制类型转换,结果是通过符号扩展得到的也为一个负数。要得到正数,一定要用(int)(unsigned char)c;因为unsigned char去除了c的符号位,所以,这样的类型转换后,再用(int)进行转换得到的就是一个正数。

(3)从上机的叙述得知,有符号数向其它类型数据转化(如char到int,char到unsigned int)时,进行符号位扩展;无符号数向其它类型转换(如unsigned char到int, long)时,进行零扩展。

                                                                                                           
   

char

   
   

short

   
   

符号位扩展

   
   

char

   
   

unsigned     char

   
   

最高位失去符号位意义,变为数据位

   
   

char

   
   

unsigned     short

   
   

符号位扩展到short;然后从short转到unsigned short

   
   

unsigned     char

   
   

char

   
   

最高位作为符号位

   
   

unsigned     char

   
   

short

   
   

0扩展

   
   

unsigned     char

   
   

float

   
   

转换到long; 再从 long 转换到float

   
 
 

(4)由大数据类型向小数据类型转换时,保留低位字节。

unsigned long

char

保留低位字节

unsigned long

short

保留低位字节

 

2.3整数运算

1.关于整数运算的最后思考

计算机执行的“整数”运算实际上是一种运算模式。表示数字的有限字长限制了可能的值的取值范围,运算结果可能溢出。C语言中的某些规定可能会产生令人意想不到的结果,而这些可能是难以察觉和理解的缺陷的源头。

 

2.4浮点数

浮点表示对形如V=x*2y的有理数进行编码近似地表示实数。当一个数字不能被准确表示时,必须向下或向上调整,由此产生了舍入(rounding)。IEEE浮点格式定义了四种不同的舍入方式,默认方法是找到最接近的匹配,而其他三种可用于计算上界和下界。

遇到的问题:对运算的公式记忆比较差,需要把公式列在一边边看边做,不能独立离开公式做题,

以前的知识记得不够劳,容易记混记错。需要时常回去记忆之前的知识。。。。。。。

抱歉老师国庆出去玩了,这个博客现在才交,望老师原谅

posted @ 2015-10-09 18:05  20135221黄卫  阅读(309)  评论(1编辑  收藏  举报