读书笔记:《深入理解计算机系统》 之 第二章 信息的表示和处理(上)

第二章预计是花两周读完的,本周依然是拖到了周末拖到了周日拖到了周日晚上,然后看书,第一节还好点,然后后面两眼一抹黑,天书啊.......

所以先记录一些学习的基础概念吧...

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
发布了41 篇原创文章 · 获赞 15 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ScanQ/article/details/100640604