读《程序是怎样跑起来的》第二章有感

通过学习这一章,我知道了二进制中位权和基数到底指什么,左移只要在空出来的低位补0,移位过程中最高位或最低位溢出的数字丢弃了即可,移位运算可以通过数位移动来代替乘法运算和除法运算类似于十进制形成倍数关系。右移较为复杂,需要考虑移位后的正负问题,也就需要考虑最高位补0还是1的问题,二进制中表示负数值时,一般会把最高位作为符号使用,称为符号位,符号位为0时表示正数,为1时表示负数。之前没接触过补数,也不知道补数究竟是来做什么的,这次知道了补数是通过正数来表示负数好让计算机通过加法运算实现减法运算,0与1互反,为了获得补数,只要将二进制数的各位数值全部取反再将结果+1,书上通过求几个具体数字的补数也更便于我们进一步理解。右移还要区分逻辑右移和算术右移,逻辑右移类似于左移不需要考虑正负,在最高位补0即可,算术右移要考虑正负,当然左移也有逻辑左移和算术左移,但都是在最低位补0。符号扩充提到的并不多,扩充时不需要考虑正负,将符号位填充高位即可。逻辑与或非类似于高中学过的,书中也提到了记忆的技巧,把0当做假,1当做真,不需要死记真值表。这一章极大的拓展了了我对左移和右移运算和补数的了解。

posted @ 2019-01-27 17:47  不解风情abc  阅读(93)  评论(0编辑  收藏  举报