数据类型
1.1内存
内存是线性的,按照字节为单位进行编址的(8b)
1.2补码
补码特点(互逆):
0的补码是0
符号位同普通位一起参与运算
补码可以使加减乘除都变成加法
8位数据(【-128,127】)表示的范围是由补码的编码规则决定的
注意:-1(1111 1111) -128(1000 0000) 127(0111 1111)
1.3数据类型划分
Char 0-128 对应ascii表
为什么需要数据类型?
数据类型提供了申请内存单元的大小和访问规则。
1.4类型转换
1.4.1小数据赋给大数据
底端对齐/符号自动填充
正数扩充0/负数扩充1
1.4.2大数据赋给小数据
int a=127;
char b=a;
a=b=127;
int a=255;
char b=a;
a=255;b=ffffffff;
以上没有发生数据丢失,仅仅截断
1.4.3隐式转化
整形提升:在32位机器中,所有低于32位的整形数据——>32位整形数据。
混合提升:
补码+类型转化+符号填充
Unsigned int填充0000
科普下补码运算:
正数的补码:与原码相同
负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
补码相减:
减法:
整数: [A-B]补 = [A]补 + [-B]补 (mod 2^(n+1))
小数: [A-B]补 = [A]补 + [-B]补(mod 2)
由[-B]补求解[B]补,或者由[B]补求[-B]补,都是连同符号位每位求反加一。
1.5内存管理
命令行参数:
Int main(int argc(输入数据个数)四个字节,char * argv[](输入数据)12个字节)
1.6数组
数组清零:int array【10】={0};——>第一个数据设为0,后面自动初始化为0;
当然数组以及二维数组,指针数组还有许多问题,希望大家可以多多交流!!!
下周学习,更c语言提高day_02 谢谢(*^_^*)
原文地址:https://www.cnblogs.com/Whgy/p/8878879.html