CSAPP第二章-信息的表示与处理-随手记

仅作为学习《深入理解计算机系统》第二章时的笔记,仅记录对自己有启发的部分,不作为知识整理。(直接看电子书就可以了)。 因为这本书知识点非常多,所以我会抽时间多次阅读,本文也会经常更新。 原码和反码会有两个0:正0和负0 原码:用第一个位来表示正负,后面的位来表示数的大小 反码:用一个正数取反来表示这个正数的相反数 这两种表示法都会存在两个0:+0和-0。 而使用补码就只有一个0了。 补码表示的新理解 关于补码,为了计算某个正数的相反数,可以用过取反+1的方式计算得到负数的补码表示。但是还有另一种方式能够更好的理解补码。 如果用5位来表示一个数: 下标 4 3 2 1 0 代表的十进制数 每个下标的数值 -16 8 4 2 1 二进制数1 0 1 1 0 1 13 二进制数2 1 1 1 0 1 -3 二进制数3 1 1 1 1 1 -1 二进制数3 0 1 1 1 1 15 可以看到其实如果按照补码的逻辑,当使用5个位来存储数字时,最高位第5位作为符号位,它的数值为-16,其他第1到4位的数值为1、2、4、8,然后再对二进制数的各个位,乘以其对应的数值,再累加,就能得到十进制数的大小。 比如二进制数1,其十进制数=0*(-16) + 1*8 + 1*4 + 0*2 + 1*1 = 13。 而负数二进制2,其十进制数=1*(-16) + 1*8 + 1*4 + 0*2 + 1*1 = -3。...

May 5, 2022 · 3 min · JohnathanLin