第二章预计是花两周读完的,本周依然是拖到了周末拖到了周日拖到了周日晚上,然后看书,第一节还好点,然后后面两眼一抹黑,天书啊.......
所以先记录一些学习的基础概念吧...
1 首先,计算机我们都知道是用0和1计算的,也就是二进制。我们平常生活中使用的是十进制。除了这些还有八进制,十六进制,这些是二进制的简便表示,是为了更好的阅读和书写。比如说十六进制中的A等同于二进制的1010,一个字符可以代替四个位。
为什么要使用二进制呢?
简单的来说,硬件方面制造两个稳定态的物理器件比较容易。同时二进制编码,技术,运算规则简单,也便于逻辑运算,还可以用逻辑电路来实现算术运算。
2 机器级数据分为两大类。
一是数值数据,即无符号整数,带符号整数,浮点数(实数)。
二是非数值数据,即逻辑数(用0和1代表真假,以及0和1组成的位串),西文字符和汉字。
3 关于原码,补码,反码
计算中都是使用补码来存储二进制的。
具体内容可以参考 https://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html
4 二进制加法规则
https://blog.csdn.net/lihchweb/article/details/81145154
5 现在电脑一般都是64位的,而32位的电脑存在着一个问题,就是他的内存不可能超过4G,因为2的32次方等于4G。
6 C语言中&与*代表什么?
https://blog.csdn.net/qq_21583681/article/details/78572009
7 书上的·一个示例和运行结果
#include <stdio.h>
typedef unsigned char *byte_pointer;
void show_bytes(byte_pointer start, size_t len){
size_t i;
for(i=0;i<len;i++)
printf("%.2x",start[i]);
printf("\n");
}
void show_int(int x){
show_bytes((byte_pointer) &x, sizeof(int));
}
void show_float(float x){
show_bytes((byte_pointer) &x,sizeof(float));
}
void show_pointer(void *x){
show_bytes((byte_pointer) &x,sizeof(void *));
}
int main(){
show_int(8);
show_float(1.3f);
int a = 5;
int *x = &a;
show_pointer(x);
return 0;
}
得到结果
08000000
6666a63f
5480b503ff7f0000