关于计算机补码的问题
教材中说一个正数的补码是其本身(原码),而一个负数的补码是对应正数取反加一,我的疑问是如果已知一个负数的补码是10110110,则要求出对应的正数,该怎么做?常规的来看,...
教材中说一个正数的补码是其本身(原码),而一个负数的补码是对应正数取反加一,我的疑问是如果已知一个负数的补码是10110110,则要求出对应的正数,该怎么做? 常规的来看,我会将10110110-1然后再取反得到,可是老师讲直接对10110110取反然后加一,我很纳闷,这是怎么回事?
展开
2个回答
展开全部
由补码求原码,采用“减一取反”,这才符合逻辑。
这么做,其在中间步骤,还可以得到反码。
但是,对于二进制来说,“取反加一”和“减一取反”,结果是相同的。
这是有理论证明的。
所以,你可以采用任意一个方法来求出原码。
不过,值得注意的是:
-128 只有八位的补码,却没有原码和反码。
无论你用哪种方法,都是求不出来原码和反码的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.是这样规定的,如果硬要理解的话,可以这样理解:
16位的-128是1000000010000000,而8位恰好位于分界点,在8位的范围内,-127到127肯定是很好理解的,而10000000表示-128理解成-0也行,理解成-128也行,采取后者正好跟16位的兼容,所以更佳!
2.定点补码表示纯小数,第一位的1表示负数,0000000表示数值,补码的补码是源码,所以0000000的补码是取反加一,等于1,所以等于-1.
16位的-128是1000000010000000,而8位恰好位于分界点,在8位的范围内,-127到127肯定是很好理解的,而10000000表示-128理解成-0也行,理解成-128也行,采取后者正好跟16位的兼容,所以更佳!
2.定点补码表示纯小数,第一位的1表示负数,0000000表示数值,补码的补码是源码,所以0000000的补码是取反加一,等于1,所以等于-1.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询