标签:
一、信息存储。
1、数字表示
无符号编码
补码编码
浮点数编码。
2.信息存储
十六进制的表示:在C语言中,以0X或者Ox开头的数字常量被认为是十六进制的值。在二进制表示法中,它的值域是00000000(2)~11111111(2);如果用十进制表示就是0(10)~255(10);
字长:指明整数和指针数据的标称大小。字长决定的最重要的系统参数就是虚拟地址空间的最大大小。
寻址和字节顺序:小端法;大端法;双端法
反汇编器:是一种确定可执行程序文件所表示的指令序列的工具。
3.表示字符串
最常见的是ASCII码。文本数据比二进制数据具有的平台独立性。
布尔代数
位向量:有固定长度为w、有0和1组成的串。
位极运算:实现掩码运算,这里的掩码是一个位模式,表示从一个字中选出的位的集合。
确定一个位级表达式的结果的最好的方法,就是将十六进制的参数扩展到二进制表示并执行二进制运算,再转换回十六进制。
4.逻辑运算
逻辑运算认为所有非零的参数都表示TRUE,而参数0表示FALSE.他们返回1或者0;按位运算只有在特殊情况下,也就是参数被限制为0或者1时,他们之间第二个重要的区别就是,如果对第一个参数求值,就能确定表达式的结果,那么逻辑运算就不会对第二个参数求值。C语言标准并没有明确定义应该使用哪种类型的右移,对于无符号数据,右移必须是逻辑的。对于有符号数据,算术的或者逻辑的右移都可以。实际上,几乎所有的编译器/机器组合都对有符号的数据使用算术右移,且许多程序员都假设机器会使用这种右移。
二、整数的表示。
1、整型数据类型
用位来编码整数的两种方式:一种只能表示非负数,而另一种只能表示负数、零和正数。
整数数据类型——表示有限范围的整数,每种类型都能用关键字来指定大小,而不同大小的分配字节数会根据机器的字长和编译器有所不同。根据字节分配,不同的大小所能表示的值的范围是不同的。
无符号数编码
补码编码——有符号数最常见的表示方法
有符号数的其他表示方法——反码和原码
2、有符号数和无符号数之间的转换
转换的原则是底层的位表示不变
零扩展——将一个无符号数转换为一个更大的数据类型,表示在开头加0。
符号扩展——将一个补码数字转换为一个更大的数据类型。
截断数字。
三、整数运算
1、无符号数加法
一个算术运算溢出,是指出完整的整数结果不能放到数据类型的字长限制中去。
2、补码加法
正溢出 x+y-2(w)
正常 x+y
负溢出 x+y+2(w)
3、补码的非,无符号乘法,补码乘法
4、乘以常数
无论是无符号运可能算还是补码运算,乘以2的幂都会导致溢出。
四、浮点数
IEEE。
当一个数字不能被准确的表示为这种格式,就必须向上调整或者向下调整
1、二进制小数
第一步是考虑含有小数值的二进制数字。
2、IEEE浮点表示
符号
尾数
阶码
三种情况:规格化的值和非规划的值和特殊值
3、舍入
4、浮点运算
感想:通过本章的学习,我们学了三种重要的数字表示,其中十六进制数的表示和二进制数的表示。还有有符号数有正码和反码之分,最常用的是用补码来表示。有符号数和无符号数的转化规则。整数类型的运算,还有浮点的表示和运算
标签:
原文地址:http://www.cnblogs.com/java44/p/4854726.html