信息的表示和处理
一、信息存储
① 3种数字的表示:无符号编码、补码编码、浮点数编码。
② 二进制、八进制、十六进制转化
③ 字:字长为w位,虚拟地址范围为0~2^w-1,程序最多访问2^w个字节。
数据大小:(short、long)int、char、long long、float、double
④ 寻址和字节顺序:
小端法:最低有效字节在最前面的方式(大多数Intel兼容机)
大端法:最高有效字节在最前面的方式(大多数IBM和Sun Microsystems)
双端法:可以设置其中一种。
⑤ 字符串(ASCII码)
⑥ 布尔代数:与 &、或 |、非 ~、异或 ^
位级运算
⑦ 逻辑运算:&&和||(非零为TRUE,0为FALSE)
⑧ 移位运算:<<、>>
java:<<、>>、<<<、>>>
二、整数表示
① char、short、int、long
取值范围:
典型取值范围中,取值范围不对称——负数的范围比整数的范围大1。
c语言标准定义的每种数据类型必须能够表示的最小的取值范围中,正数和负数的取值范围是对称的。
② 无符号数、有符号数的补码编码
③ 截断数字:对于无符号数来说,就相当于 mod 2的k次幂,而对于有符号数来说,先按照无符号数截断,然后再转化为有符号数。
三、整数运算
整数运算较为精确,但进行有符号数运算时容易溢出,导致计算值出现错误。
整数加法: 形成交换群(阿贝尔群…)、模运算
容易溢出,但满足结合律、交换律、分配律,可以进行优化计算
四、浮点数
浮点数运算不会溢出,但是计算的结果是一个大致的范围,并不十分精确,不同的计算过程会有不同的计算值。
① 二进制小数:权值2^(-w)(w为小数点右边第几位)
② IEEE浮点表示:符号、尾数、阶码
规格化的值、非规格化的值、特殊值
③ 浮点运算:加法:不具有结合律,满足单调性
④ c语言的浮点数:float、double
遇到的问题:
溢出还是有些地方不是很清楚。
不知道阿贝尔群就是交换群,遗忘了交换群的概念以及性质,通过百度重新熟悉了以前的知识。
对运算公式的不熟悉,不知道是否需要记忆,希望今后用熟了就可以记下来。