5233杨光--第三周实验报告

信息的表示和处理

一、数字表示

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

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

    3、 浮点数:编码是表示实数的科学计数法的以二位基数的版本。 

     ***当结果太大不能表示时会溢出,大量安全漏洞都是由于算数运算引发的***

二、信息存储

    1、最小的可寻址存储器单位:字节

    2、虚拟存储器:每个字节都由唯一的数字标识,称为地址

    3、虚拟地址空间:所有可能地址的集合

    4、每个程序对象可视为字节块,程序本身是一个字节序列

***十六进制表示法

0x...

当x是2的非负整数二次幂时,将n写作i+4j的形式,j表示0的个数

i=0 :1      i=1 :2    i=2 :4     i=3 :8

进制转换代码

***

字长:指明整数和指针数据的标称大小

字长为w,虚拟地址范围:0~2的w次方-1,最多访问2的w次方个字节

大多数计算机字长为32位,实验楼为64位

gcc -m32 可以在64位机上生成32位的代码

***数据大小

见书p26图2-3

两种不同的浮点数格式:单精度 双精度

格式:4字节 8字节

***寻址和字节顺序

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

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

反汇编器:确定可执行程序文件所表示的指令序列的工具

C 强制类型转换

sizeof 确定对象使用字节数

不同的操作系统有不同的分配规则,结果相同,指针值却完全不同

字节模式 整型 0x00003039  浮点数 0x4640E400

***表示字符串

字符串:以null字符结尾的字符数组

文本数据比二进制数据具有更强的平台独立性

库函数strlen不计算终止的空字符

***表示代码

二进制代码是不兼容的,很少能在不同操作系统间移植

2.1.7 布尔代数简介

与 或 非 异或

位向量:表示有限集合

***C语言中的位级运算

确定一个位级运算最好的方法:将十六进制的参数扩展成二进制表示并执行二进制运算,然后再转换回十六进制

常见用法:掩码运算

掩码:位模式,从一个字中选出的位的集合

***C语言中的逻辑运算

0 false 非0 true

如果对第一个参数求值就能确定表达式的结果,那么逻辑运算符就不会对第二个参数求值

***C语言中的移位运算

<<    >>

逻辑右移:左端补0

算数右移:左边补最高有效位

对于无符号数据,右移必须是逻辑的

 

三、整数表示

两种方式

***整型数据类型

可表示负数,零,和正数

取值范围中,负数的范围比整数大1

***无符号数的编码

重要属性:每个介于0~2的w次方-1之间的数都有唯一一个w位的值编码(双射函数)

***补码编码

最常见的有符号数的计算机表示方式就是补码形式

将字的最高有效位解释为负权

最高有效位:符号位

权重-2的位数次方,是无符号表示中权重的负数

最小值[10...0] 最大值[01...1]

UMax TMin TMax

P42页表

|TMin|=|TMax|+1

UMax=2TMax+1

***有符号数和无符号数之间的转换

数值可能会改变,但是位模式不变

这一段没太看懂

***C语言中的有符号数与无符号数

大多数数字都默认为有符号的

要创建一个无符号常量,要加上后缀U或u

转换的原则是底层的位保持不变

如果一个运算一个有符号一个没符号,会将有符号强制转换为无符号

***扩展一个数字的位表示

在不同字长的整数之间转换,同时又保持数值不变

无符号数:开头添0(零扩展)

补码:添加最高有效位值得副本(符号扩展)

***截断数字

减少一个数字的位数

截断一个数字会改变值(溢出)

 

四、整数运算

***无符号加法

可以被视作一种模运算形式

溢出:完整的整数结果不能放到数据类型的字长限制中去

2.3.2 补码加法

2.3.3 补码的非

2.3.4 无符号乘法

2.3.5 补码乘法

2.3.6 乘以常数

2.3.7 除以2的幂 

五、 浮点数

对形如V=x*2的y次方的有理数进行编码

***二进制小数

重点掌握表示方法,p69表

***IEEE浮点表示

标准:V=(-1)的s次方*M*2的E次方

符号:s决定正(0)负(1)

尾数:M是二进制小数

阶码:E的作用是对浮点数加权

情况1:规格化的值:当exp的位模式既不全是0,也不全是1

情况2:非规格化的值:阶码域全0

情况3:特殊值:阶码全1

***舍入

找到最接近的匹配值

四种舍入方式

默认方法找到做接近的匹配,其他三种用于计算上界和下界

向偶数舍入(默认):向上舍入,向下舍入

***浮点运算

不具有结合性

满足了单调性

只有有限的范围和精度

***C语言中的浮点数

float double

 

感想:这部分讲的基本和以前学过的知识能相结合,所以不是很难理解,学的较为轻松,就是补码转有符号数还是不是非常熟练,需要多练习。

posted @ 2015-10-08 15:50  Mccartney  阅读(198)  评论(0编辑  收藏  举报