深入理解计算机操作系统
赵军林
不断突破自己。
展开
-
深入理解计算机操作系统(2.2.2 2.2.3)
无符号数编码定义: 举例: 范围:w位二进制表示的范围:0~2^w-1。 重要属性:每个介于0~2^w-1之间的数都有唯一一个w位的编码。 补码编码定义: 解释定义,就是最高位既是符号位,也参与运算,最高位为1时,表示负数。 一个有符号的8位int类型的数表示的范围是-128~127,负数的范围要比正数大1,就是负数最大可以表示为10000000,而正数只能表示为01111111原创 2017-08-08 22:46:25 · 350 阅读 · 0 评论 -
深入理解计算机操作系统(2.3.1)
无符号数加法两个w位数相加,需要w+1位才能表示,如果支持无限精度的运算,那么就不能对字长做限制。反之,则需要截掉高位的数。无符号数加法原理: 解释原理:如果x+y<2^w,那么不会产生溢出,正常计算。如果x+y>=2^w,那么w位的二进制就不能表示两个数字的和,那么就必须截断二进制,截断无符号数就是从最高位开始截断,截断最高位1,就相当于减去了2^w。检测是否溢出原理: 无符号数求反:原创 2017-08-14 23:30:33 · 247 阅读 · 0 评论 -
深入理解计算机操作系统(2.2.7)
截断数字无符号数截断当一个w位的数截断位一个k位的数时,我们会丢掉w-k位。简单说就是截断几位就从最高位开始去掉几位。 原理: 举例: 101111(47)截断两位,那么截断后的二进制为1111。 47%2^4 = 15,也就是1111。补码数截断原理: 当把一个数x截断为k位时,步骤:x mod 2^k。用补码解释二进制数。举例:将x=53191从int类型转为short类型原创 2017-08-13 23:41:03 · 366 阅读 · 0 评论 -
深入理解计算机操作系统(2.1.8 2.1.9)
C语言的逻辑运算三种逻辑运算符:||、&&、! ||:只要有一个表达式为真,该运算符的结果就是真。 &&:两个表达式全为真,该运算符的结果才为真。 !:取得相反的结果。 非零的值表示都为真(TRUE),零表示为FALSE。||和&&运算符,只有第一个参数能确定表达式的值,那么后一个参数将不会进行运算。因此表达式a&&5/a不会造成被零除。C语言中的位移运算左移:位向左边移动,左边的位直接截断原创 2017-08-06 14:55:55 · 299 阅读 · 0 评论 -
深入理解计算机操作系统(2.2.7)
扩展一个数字的位表示把一个无符号数转为一个更大的数据类型时,在前面加添加0。因为在无符号数前面添加0并不会改变无符号数的值。把一个补码数转为一个更大的数据类型时,在前面添加最高有效位。 举例:二进制数101扩展到1101 101 -3 1101 -3 原理: 原理推导: 原理解释: 101扩展到1101时,最高位相当于加了1000(-8),但是101原本的最高位100(-4),原创 2017-08-13 00:02:46 · 238 阅读 · 0 评论 -
深入理解计算机操作系统(2.1.3)
字节序原创 2017-08-03 23:26:42 · 391 阅读 · 0 评论 -
深入理解计算机操作系统(2.3.3)
补码的非 解释:这里的非并不是C语言中的~,而是表示该数的加法逆元。 加法逆元:对于一个数x,总有一个数y,使得x+y=0,那么y就是x的加法逆元,相反x也是y的加法逆元。对于TMin(w),它的加法逆元就是它本身,因为TMin(w)+TMin(w) = -2^(w-)+(-2^(w-1))= -2^w,-2^w产生了负溢出,截断就是就是0。计算加法逆元:对于w位数x,它的加法逆元等于~x+1原创 2017-08-17 22:52:19 · 497 阅读 · 1 评论 -
深入理解计算机操作系统(2.1.1、2.1.2)
信息存储计算机中字节(8位二进制)是最小的内存单位,意思就是小于8位二进制的表示都是没有意义的。内存中每个字节都有唯一的数字来表示,称为地址。原创 2017-08-02 23:27:34 · 1228 阅读 · 0 评论 -
深入理解计算机操作系统(2.2.4)
有符号数和无符号数之间的转换在C语言中,对于有符号数和无符号数之间的转换是从位级的角度来考虑的而不是从数级的角度来考虑的。简单说就是,对于有符号数和无符号数之间的转换,我们希望的是在可以表示的范围内,数值表示不变,但是C语言中,是二进制位不变,改变解释二进制位的方式。 举例: 一个8位的无符号数128,二进制位是10000000,转为一个8位的有符号数,二进制位依旧是1000000,但是表示的是原创 2017-08-09 23:12:08 · 262 阅读 · 0 评论 -
深入理解计算机操作系统(2.3.2)
补码数加法原理: 原理解释:补码数相加有两种溢出,一种是正溢出,一种是负溢出。正溢出两个正数相加可能会变成负数,例如,一个两个8位的数相加,一个是127(011111111),一个是1(00000001),结果为100000000,在补码中表示为-128。另外一种负溢出就是两负数相加得到一个正数,8位的-128(10000000)+(-1(11111111))=127(101111111),截去最原创 2017-08-16 22:52:32 · 323 阅读 · 0 评论 -
深入理解计算机操作系统(2.4.2)
IEEE浮点表示IEEE浮点标准用V=(-1)^s * M * 2^E来表示一个数。 符号s:s是符号位,1表示负数,0表示正数。 尾数M:M是一个二进制小数,范围是1~2-δ,或者是0~1-δ。 阶码E:E的作用是对浮点数加权,这个权重是2的E次幂。C语言中的float和double的表示:根据exp的值,被编码的值可以分成三种不同的情况,最后一种又分两种: 规格化:当exp的值不全是0也原创 2017-08-29 19:39:27 · 394 阅读 · 0 评论