深入理解计算机系统(二)--信息的表示和处理

一、信息的表示
现代计算机中的信息都是使用二进制的数字进行表示,通常来说,单个的位不是非常有用,但是当把位组合在一起,再加上某种解释,就能够表示任何有限集合的元素。
三种重要的数字表示:
1、无符号编码
基于传统的二进制表示法,表示大于或者等于零的数字。

2、补码编码
表示有符号整数的最常见的方式,有符号整数就是可以为正或者为负的数字

3、浮点数编码
表示实数的科学记数法的以2为基数的版本。

计算机的表示法是用有限数量的位来对一个数字编码,因此当结果太大时以至于不能表示时,某些运算就会溢出。整数运算和浮点数运算会有不同的数学属性是因为它们处理数字表示有限性的方式不同----虽然整数的表示只能编码一个相对较小的数值范围,但是这种表示是正确的;而浮点数虽然可以编码一个较大的数值范围,但是这种表示只是近似的。

二、信息的存储
大部分计算机中使用8位的块(也就是字节)作为最小的内存单位,而不会单独访问内存中的位。机器级程序将内存视为一个非常大的字节数组,称为虚拟内存。内存中的每个字节都由一个唯一的数字来标识,称为它的地址,所有可能地址的集合就称为虚拟地址空间。
每个程序对象可以简单的视为一个字节块,而程序本身就是一个字节序列。
1、十六进制表示法
二进制、十进制表示法对于描述位模式来说都不是非常方便。二进制表示法太长,十进制表示法则与位模式的互相转化比较麻烦。替代方法则是使用十六进制。,来表示位模式。

2、字数据大小
每台计算机都有一个字长,指明指针数据的标称大小,其实就是计算机是32位还是64位。32位字长限制虚拟地址空间为4GB。

三、寻址和字节顺序
对于跨越多字节的程序对象,有以下两个规则:
1、程序对象的地址是啥?
2、在内存中如何排列这些字节?
在计算机中,多字节对象被存储为连续的字节序列,对象的地址则为所使用字节中最小的地址。

四、表示字符串
每个字符都由某个标准编码来表示,不同的机器类型使用不同的且不兼容的指令和编码方式,即使是完全一样的进程,运行在不同的操作系统上也会有不同的编码规则,因此二进制代码是不兼容的。二进制代码很少能在不同机器和操作系统组合之间移植。
计算机系统的一个基本概念就是,从机器的角度来看,程序仅仅只是字节序列。机器没有关于原始源程序的任何信息,除了可能有些用来帮助调试的辅助表以外。

原文地址:https://www.cnblogs.com/alimayun/p/9508887.html

时间: 2024-08-01 03:50:47

深入理解计算机系统(二)--信息的表示和处理的相关文章

《深入理解计算机系统》——信息的表示和处理

一.信息存储 系统将8位的块作为最小的可寻址存储器单位,机器级程序系统看成一个大的数组,然后通过地址来获得存储器中的这些块的内容. 数据在计算机中的存储都是用二进制,不过二进制不易表示,一般我们用十六进制来表示.如八位的十六进制范围为00~FF. 计算机的字长代表其整数数据的大小,同时也是系统絮凝地址空间最大大小. C语言中对布尔代数的操作有提供几种方式,比如&(与),|(或),~(取反),^(异或). 二.整数的表示 我们描述用位来编码证书的两种不同的方式: 一种只能表示非负数,另一种能够表示

《深入理解计算机系统(第三版)》第二章 信息的表示和处理

<深入理解计算机系统(第三版)>第二章 信息的表示和处理 ??计算机本身是由处理器和存储器子通过系统组成.在核心部分,我们需要方法来表示基本数据类型,比如整数和实数运算的近似值.然后,我们考虑机器级指令如何操作这样的数据,以及编译器又如何将C程序翻译成这样的指令.接下来,研究几种实现处理器的方法,帮助我们更好的了解硬件资源如何被用来执行指令.理解了编译器和机器级代码,我们就能了解如何通过编写C程序以及编译它们来最大化程序的性能.本章主要使我了解了如何表示和执行应用程序,通过一些技巧,来写出安全

《深入理解计算机系统》 Chapter 7 读书笔记

<深入理解计算机系统>Chapter 7 读书笔记 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(货被拷贝)到存储器并执行. 链接的时机 编译时,也就是在源代码被翻译成机器代码时 加载时,也就是在程序被加载器加载到存储器并执行时 运行时,由应用程序执行 链接器使分离编译称为可能. 一.编译器驱动程序 大部分编译系统提供编译驱动程序:代表用户在需要时调用语言预处理器.编译器.汇编器和链接器. 1.将示例程序从ASCⅡ码源文件翻译成可执行目标文件的步骤 (1)运

《深入理解计算机系统》第六周学习笔记

第四章 处理器体系结构 (一)知识点总结 一.Y86指令集体系结构 1.Y86处理器状态类似于IA32,有8个程序寄存器: %eax.%ecx.%edx.%ebx.%esi.%edi.%esp.%ebp.处理器的每个程序寄存器存储一个字.%esp被入栈.出栈.调用和返回指令作为栈指针. 2.3个一位的条件吗:ZF.SF.OF,它们保存最近的算术或逻辑指令所造成影响的有关信息.程序计数器PC存放当前正在执行指令的地址. 3.程序状态的最后一个部分是状态码stat,它表明程序执行的总体状态 4.Y8

深入理解计算机系统读书笔记一 ---&gt; 计算机基础漫游

一.程序编译的不同阶段. 通常我们是以高级程序开发易于阅读的代码,我们通过语法规则推断代码的具体含义.但是计算机执行代码的时候就需要把代码解析成既定的可执行问题,计算机是如何处理的呢?这里以C语言hello.c文件为例来说明中间过程. #include <stdio.h> int main() { printf("hello world!\n"); } 先上张图. C语言源程序----预处理解析头文件和函数  --- 编译器解析成汇编语言 ---   翻译机器语言指令,打包

深入理解计算机系统(1.1)------Hello World 是如何运行的

上一篇序章我谈了谈 程序员为啥要懂底层计算机结构 ,有人赞同也有人反对,但是这并不影响 LZ 对深入理解计算机系统研究的热情.这篇博客以案例驱动的模式,通过跟踪一个简单 Hello World 程序的生命周期开始系统的学习,包括它被程序员创建,到在系统上运行,输出简单的消息,然后终止.LZ 将沿着这个程序的声明周期,先简要的介绍一些逐步出现的关键概念.专业术语以及组成部分.后面将会详细展开. 1.计算机系统 我们知道计算机系统是由硬件和软件组成的.它们共同工作来运行应用程序.虽然系统的实现方式随

对找工作功不可没——评《深入理解计算机系统》

对找工作功不可没——评<深入理解计算机系统> 引子: 在我刚刚进入中科院计算所读研的时候,同宿舍的师兄便向我推荐了一本<深入理解计算机系统>,这本书从一个程序员的视角详细剖析了整个计算机系统,涵盖了组成原理.汇编语言.体系结构.操作系统.网络等计算机基础知识. 由于时间所限,我并没有立刻阅读,而是将其列入了找工作前的复习书单.2010年8月,我用了一个月的时间读完了这本书的原版<Computer System:A programmer's perspective>.后来

4.2《深入理解计算机系统》笔记(五)并发、多进程和多线程【Final】

该书中第11章是写web服务器的搭建,无奈对web还比较陌生.还没有搞明白. 这些所谓的并发,其实都是操作系统做的事情,比如,多进程是操作系统fork函数实现的.I/O多路复用需要内核挂起进程.多线程需要内核创建和挂起线程.我么只是使用以下操作系统的这项并发技术.但是我们必须处理一些存在问题. ●进程.用这种方法,每个逻辑控制流都是一个进程,由内核来调度和维护.因为进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用进程间通信(IPC). ●I/O多路复用.这种形式的并发,应用程序在一个进

速读《深入理解计算机系统》

本周速读了<深入理解计算机系统>这本书,这本书从程序员的角度介绍了计算机系统的内在运作,展示了一些本质概念是如何实际的影响应用程序的正确性.性能和实用性的.收获如下: 1.关于进程和线程 进程是操作系统对运行程序的一种抽象,是指计算机中已运行的程序,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 线程有时被称为轻量级进程,是操作系统能够进行运算调度的最小单位.线程是进程中的一个实体,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥