二进制B
八进制O
十进制D
十六进制H / 0x十六进制
十进制数转换成R进制数:整数部分除基取余,上右下左;小数部分乘基取整,上左下右。
浮点数的阶用一种称为移码的编码表示方法,方便对阶。阶的编码称为阶码(阶用移码表示的01序列)
[E]移=偏置常数+E,偏置常数为2
n-1或2
n-1-1。
int→float:不溢出、可能舍去(int的有效位数比float多,float24位有效数字最多精确表示7位10进账数字)
int→double、float→double:保留精确值
double→float:可能溢出、可能舍入
float→int:数据向0方向截断
double→int:数据向0方向截断、大的浮点数转换为整数时发生错误
C语言规定,short和int至少16位,long至少32位,且必须满足short≤int≤long,具体由编译器决定
char:8位
short:16位
int:32位
long:IA32中32位、x86-64中64位
long long:ISO C99引入,64位。
long double:ISO C99引入,80位。但在IA32中占96位(12B对齐)、在x86-64中占128位(16B对齐)
Windows中不同类型按数据长度对齐,char型无需对齐
Linux中short地址是2的倍数,int、float、指针、double地址是4的倍数(double可能要访问两次)
struct,编译器使其首地址4B对齐
ASCII码(美国标准信息交换码):b7=0,一般放奇偶校验码
字符0-9:011+8421码
英文字母:b5=0为大写、b5=1为小写
100 0001~101 1010表示a~z
110 0001~111 1010 表示A~Z
外码(输入码):西文键盘某个按键
14位区位码:7位区号(行号)+7位位号(列号)
区号位号各加32(20H)得到14位国标码(国际交换码)
表示汉字的两个字节最高位b7=1,这种16位双字节汉字编码为机内码(汉字内码),当然也可以有不同的编码方案
C语言的基本运算:
①算术运算:+、-、×、/ 、%
②按位运算:|、&、~、∧
③逻辑运算:||、&&、!
④移位运算:无符号数逻辑移位(左移时高位移出低位补0,移出1则发生溢出;右移时低位移出高位补0)
带符号整数算术移位(左移时如果移出的高位不同于移位后的符号位则发生溢出;右移时低位移出高位补符号)
⑤位扩展运算:无符号数0扩展(如unsigned short扩展为unsigned)、符号扩展(如short扩展为int)
⑥位截断运算