![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 65
摩天轮的思念
这个作者很懒,什么都没留下…
展开
-
扩展数字位
零扩展:将一个无符号数转换成一个更大的数据类型,我们只需简单的在表示开头添加0,这种运算称为零扩展。 符号扩展:将一个补码数字转换成为一个更大的数据类型可以执行符号扩展,规则是在表示中添加最高有效位置的副本。看一下一个代码:#include <iostream>using namespace std;typedef unsigned char* byte_pointer;void show_b原创 2017-04-09 22:09:59 · 1050 阅读 · 0 评论 -
程序访问信息
IA32的整数寄存器在IA32中央处理单元(CPU)中,包含了8个32位整数寄存器(如下图)。从图中可以看到在每个32位寄存器的名字前面都会有一个%e,在这里可以把e理解成extended(扩展的),因为早期的8086寄存器是16位,所以加e之后就变成32位的了。虽然现在的寄存器是32位的了,但仍然不影响我们对16位寄存器的使用,图中的ax,cx,dx,bx,si,di,sp,bp均是16位寄存器,原创 2017-04-12 20:37:01 · 426 阅读 · 0 评论 -
算数和逻辑操作
指令类ADD由三条加法指令组成:addb, addw, addl, 分别是字节加法,字加法和双字加法。 事实上,每个指令类都有对字节,字和双字数据进行操作的指令。这些操作被分为四组:加载有效地址,一元操作,二元操作,移位。 加载有效地址:加载有效地址(load effective address)指令leal实际上是movl的变形。原创 2017-04-12 22:37:40 · 1326 阅读 · 0 评论 -
线程的分类
线程分类:用户级线程和内核级线程(轻量级进程)用户级线程:在一个纯粹的用户级线程软件中,有关线程管理的所有工作都由应用程序完成,内核意识不到线程的存在。使用用户级线程而非内核级线程有很多优点: (1)由于所有线程管理数据结构都在一个进程的用户地址空间中,线程切换不需要内核态特权,因此,进程不需要为了线程管理而切换到内核态,这节省了两次状态转换(从用户态到内核态,从内核态返回到用户态)的开销。原创 2017-04-22 21:44:56 · 9128 阅读 · 0 评论 -
解析.bmp文件的结构
BMP文件组成:BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成 BMP文件头:BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置其结构定义如下: typedef struct tagBITMAPFILEHEADER { WORDbfType; // 位图文件的类型,必须为BM DWORD bfSize; // 位图文件的大小,以字节为单位原创 2017-04-09 20:55:34 · 452 阅读 · 0 评论 -
二进制文件和文本文件的区别
文本文件与二进制文件的定义 文本文件:是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。 二进制文件:是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码。 从上面可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8)。而二进制文件可看成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。原创 2017-04-10 22:19:10 · 4959 阅读 · 0 评论