数据类型
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 谢谢(*^_^*)
来源: http://www.bubuko.com/infodetail-2567414.html