大二小白刚学的计组,知识点还有些混乱,在这里归纳总结一下(全是干货),以便接下来更好的学习。后面还有一道困扰自己较大的题目,有解析。
一 .先介绍原码,反码,补码和移码之间的关系:
反码:原码按位取反(不包括符号位)
补码:反码+1(寄存器中存储的为补码)
移码:符号位取反的补码
二.然后介绍有符号数和无符号数,这在接下来讲的左右移有关系:
无符号数(Unsigned number):是相对于有符号数而言的,指的是整个机器字长的全部二进制位均表示数值位,相当于数的绝对值。(最高位不是符号位)
以四位无符号数为例,其能表示的最大数就为1111,最小数就为0000。其表示范围就是0-15。
有符号数:有符号数是针对二进制来讲的。用最高位作为符号位,“0”代表“+”,“1”代表“-” ;其余数位用作数值位,代表数值。原码,反码,补码都是有符号数。
两个有符号数和无符号数的区分方法:
1.若一个数小于0,则是有符号数
2.一个数取反(包括符号位)若仍大于0则为无符号数,否则为有符号数
三.然后介绍的就是逻辑左移,逻辑右移,算术左移和算术右移:
逻辑位移(包括符号位):
逻辑左移:高位舍去,低位补零
逻辑右移:低位舍去,高位补零
如:1011逻辑右移一位:0101
算术位移(不包括符号位):
算术左移:高位舍去,低位补零
算术右移(正数):低位舍去,高位补零
算术右移(负数):低位舍去,高位补1
如:1011算术右移一位:1101
算术左移一位: 1110
若为无符号数,无符号数的位移都为逻辑位移
关于原码,反码,补码补0还是1的问题:
(1):真值为正数:不管原码、反码、补码,左移和右移一律补"0"
(2):真值为负数:原码:补"0" , 反码:补"1" , ,补码:左移补"0",右移补"1"
四.题目讲解

如果没做过的小伙伴可以先看看题目想想思路,如果会做的话我下面所讲的就可以不用看了,当然也可以帮我检查一下,如果有问题的话希望能告诉我:
首先A=-26,则原码为111010,反码为:100101,补码为:100110
原码算术右移三位得: 100011,真值为-3
反码算术右移三位得: 111100,其原码为100011,真值为-3
补码算术右移三位得: 111100,其反码为111011,原码为100100,真值为-4
五.总结
其实只要看懂前1,2,3点所讲的内容,我刚开始遇到困难的这个题目其实也能很容易理解,由于刚开始学习时对这部分内容还没掌握,很多知识都不能够很好的串联起来,导致做题时问题频出,根本摸不着头脑,甚至有些题目根本看不懂。所以在接下来的学习中还是 一定要脚踏实地的学,不懂的问题就问,不会就查。写这篇博客一是给自己在以后学习时如果对这部分内容感到模糊了可以反过头来查看学习,寻找当时的学习思路。二是给其他正在学习的友友们提供我对这部分内容的见解,帮助大家快速理解所讲内容。如果文章中有没写好的地方欢迎指正,有其他问题敬请留言。

6789

被折叠的 条评论
为什么被折叠?



