C《二》
开始阅读谭浩强的C语言程序设计。
编译一个程序,除了语法以外,还需要管理内存,就是数据结构,学习如何高效的利用内存;数据关系的处理。例如学生管理系统的开发,但是数据关系是有最优解的,也就是可以学会的,因此学习主线就是沿着C语言的设计主线来推理C。
接着对上次1+1的程序的探索,int i,j,k都是CPU写入内存,CPU由两部分组成,一个是自己的内存,一个是自己的逻辑处理问题的结构。k = i + j是把两个数据的和读入然后写入内存存储起来,并将结果放在内存里边。
k等价于申请的两个内存的标号或者数据,也就是变量。首先讲数据如何在内存中存储。
计算机是二进制的世界0和1,一个字节有8位用来存储数据。
对于十进制中的0123456789的存储方式分别为:
0000-0000、0000-0001、0000-0010、0000-0011、0000-0100、
0000-0101 //5、0000-0110 //6、0000-0111 //7、0000-1000 //8、以此类推。
注意7+8=15 因此15的二进制就是1111。也就是四个字节能表示的数就是0-15,之后的就是用
0123456789ABCDEF表示。
0001 == 2^0、0010 == 2^1、0100 == 2^2、1000 == 2^3
靠,被他搞晕了,原本是知道如何对十进制转换成二进制的。
继续,char和int不仅是申请类型,而且是申明类型,开始编程:
当给i强行转换类型的时候,把i当一个字节来转换,如果字节数超过255的时候,就会出现一些有趣的现象,例如输入i为300的时候结果输出的是44,为什么?因为十进制转16进制为012C,而因为只取一个字节,为2C,在十进制中就代表44,因此输出是44。
那么为什么先取2C而不是01呢,因为在内存里面的存储方式是左边小右边大,我们人类正常的读写顺序是从左往右读取,也就从高读到低,而计算机要从低开始存储数据,则是从又到左读入数据。因此是2C开始存储。
好有意思的思维。。。