C语言学习笔记
数据的存储1.
类型的基本归类
内置类型
整形 | |
---|---|
char | unsigned char ,signed char |
short | unsigned short[int] , signed short[int] |
int | unsigned int , signed int |
long | unsigned long , signed long |
浮点型 | |
float | |
double | |
构造类型:
数组类型,
结构体类型【struct】,
枚举类型【enum】,
联合类型【union】;
指针类型
int *pi;
char *pr;
空类型
void 通常应用于函数的返回类型,函数的参数指针类型;
void *pv;无具体类型的指针
原码,反码,补码
计算机中的有符号数的三种表示方法
三种表示方法均有符号位和数值位两个部分,符号位用0表示“正”,用1表示“负”,二数值位三种表示方法各不相同;
正数的原,反,补码相同;
对于整形来说:数据存放内存中其实存放的是补码;
原因:
再计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理,同时,加法和减法也可以统一处理(CPU只有加法器),此外,原码与补码相互转换,其运算过程是相同的,不需要额外的硬件电路
int main()
{
1-1;//1+(-1)
//原码相加:
//00000000000000000000000000000001
//10000000000000000000000000000001
//10000000000000000000000000000010
//反码相加:
//10000000000000000000000000000001
//11111111111111111111111111111110
//11111111111111111111111111111111
//补码相加:
//00000000000000000000000000000001
//11111111111111111111111111111111
//10000000000000000000000000000000
}
原码
直接将二进制按照正负的形式翻译成二进制就可以;
反码
将原码的符号位不变,其他位次依次按位取反得到;
补码
反码+1;
int main()
{
int a=20;//4个字节-32bit,一个字节8bit
//00000000000000000000000000010100-原码
//00000000000000000000000000010100-反码
//0000 0000 000000000000000000010100-补码
//0X00000014十六进制位
int b=-10;
//00000000000000000000000000001010-原码
//11111111111111111111111111110101-反码
//1111 1111 11111111111111111111 0110-补码
//8421
//0XFFFFFFF6
return 0;
}
整数:
1.有符号数
正数:原码,反码,补码相同
负数:原码,反码,补码不同,要进行计算
2.无符号数
原码,反码,补码相同
大端,小端
【大小端字节序存储模式】
大端(存储)模式,数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中
小端(存储)模式,数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中
c语言头文件:
1.#include<stdlib.h>使用:
stdlib.h里面定义了物种类型,一些宏和通用工具函数。在使用该类型,宏和通用工具函数时需要用stdlib.h头文件。
类型:
size_t, wchar_t, div_t, ldiv_t, lldiv_t;
宏:
EXIT_FAILURE, EXIT_SUCCESS, RAND_MAX, MB_CUR_MAX等等;
常用的函数:
malloc(), calloc(), realloc(), free(), system(), atoi(), atol(), rand(), srand() 等等;