数据压缩作业一2020.02.16
总结归纳计算机编程中的各种数据类型,其表示形式和计算方法。重点关注类型转换、数值溢出和移位等操作。
1. 类型转换
1.参与运算的数据类型不同时,要先转换为同一种类型,然后运算。
容量小的类型转换为容量大的类型是自动转换,把容量大的类型转换为容量小的类型是强制类型转换(强制转换有暂时性)。
2.自动转换方向按长度增加方向进行
byte/char/short—int—unsigned—long—double
3.不能对boolean类型进行类型转换。
4. 不能把对象类型转换成不相关类的对象。
5. 转换过程中可能导致溢出和精度损失。
2.数值溢出
1.缓冲区溢出
向缓冲区写入使之溢位的内容。计算机对接收的输入数据没有进行有效的检测(理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符),向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。
2.堆栈溢位
多函数呼叫使呼叫堆栈产生溢位。
不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致数据越界,结果覆盖了别的数据
3.物理溢出
大致就是物体在所在盛器中超出盛器容量并从盛器中满出次物体的过程,就是溢出。
4.数据及算术溢出
在计算机领域里所发生的溢出条件是,运行单项数值计算时,当计算产生出来的结果是非常大的,大于寄存器或存储器所能存储或表示的能力限制。
在计算机领域里,运行多项或累计的数值计算时,当计算产生出来的总值是非常大的,大于寄存器或存储器所能存储或表示的能力限制。要注意的是,溢出可能会在其他地址被置换。
3.移位
1.逻辑移位
整组数据的移位,只有数字位置的变化,无数量变化。
左移低位补零,右移高位补零。
2.循环移位
数据本身形成闭合环路。
3.算术移位
带符号的数移位,符号不变、数量变化。若左移前最高有效位为1,将溢出。
左移:符号位不变,依次左移,末尾补零。
右移:符号位不变,依次右移,最高有效位补零。