现在的位置: 首页 > 综合 > 正文

深入理解计算机操作系统学习笔记(1)

2014年09月05日 ⁄ 综合 ⁄ 共 539字 ⁄ 字号 评论关闭

关于布尔代数:

布尔代数中的~,^,|,&分别对应于逻辑运算中的非,异或,或,且运算。

逻辑运算和C语言中的位运算是不同的:逻辑运算和位运算是不同的,尽管他们都用了布尔代数。逻辑运算默认非零的均为1,任何控制和零值都是零,也就是真和假,并且逻辑运算具有短路性。这两个特性在位运算中是没有的~


移位运算:
左移位:从左至右结合,丢弃最高位,并在后面补零

右移位:

1,逻辑右移:在高位补零

2,算数右移:   在高位补最高位的有效值

在C中,对于无符号数的右移必须是逻辑的,而对有符号数一般来说都是算数右移。移位的数量尽量要小于字长。


补码从位向量到整数的映射:

利用的是位权相乘的形式,只不过因为最高位的符号位是1表示的是负数,那么在位权相加的时候,最高位也要乘负权。


关于强制类型转换:

一个数值,无论是利用小端法还是大端法储存在内存中,他们的位表示是不变的。强制类型转换,并不改变数字在内存中本身的位表示,而是改变了对这些位的解释方式。比如,负数补码的权重变成了负数而不是正数。有符号和无符号数值之间的转化也是一样的。但是前提是,转换的数字的字长必须都相同。

某一个有符号数与某一个无符号数肯定会对应一个唯一的位表示。


如果运算中出现了有符号数和无符号数两种,那么会强制转化为无符号数进行运算。都为非负数。

抱歉!评论已关闭.