大家好,我是小新,我来为大家解答以上问题。补码原码反码怎么计算,补码原码反码很多人还不知道,现在让我们一起来看看吧!
1、原码、反码、补码 表示一个数值要先说明是用多少bit,例如: 用8bit表示数值时,(-128)没有相对应的原码和反码, (-128)补码 = (1000 0000) 同理(2B=16bit)表示:(-32768)补码=(1000 0000 0000 0000),后面回给出证明, 因为它是不能简单的用取反加一的方法来求反码的。
2、 2、 证明:用(2B=16bit)表示:(-32768)补码=(1000 0000 0000 0000) (1)32767(正数补码与原码相同)是0111 1111 1111 1111 (2)-1的补码,其原码取反在加一得 1111 1111 1111 1111 (3)0111 1111 1111 1111+1000 0000 0000 0000=1111 1111 1111 1111 (4)(令上式x==1000 0000 0000 0000)即:32767+x=-1 (5)x=-32768 至于用(2B=16bit)表示,取反加一求(-32768)的补码,还望哪个高手指点简单的证明过程。
3、 希望大家以后在被问为什么(-128)补码 = (1000 0000), (-32768)补码=(1000 0000 0000 0000)不要在说什么取反加一的话, 那样你证明我看看。
4、给出证明,免得人家不明白还以为你在谈什么高深的话题, 结果却是被忽悠了。
5、 3、 下面举例说明求负数的补码的补码 -1的补码是0xFFFF. 它是这样求的: -1的原码: 1000 0000 0000 0001 , 数值位按位求反: 0xFFFE==1111 1111 1111 1110, 末位加1: 0xFFFF==1111 1111 1111 1111 现在还按这个补码的求法, 作用在0xFFFF上, 0xFFFF : 1111 1111 1111 1111 数值位按位求反: 1000 0000 0000 0000 末位加1: 1000 0000 0000 0001, 这样又得到了-1。
6、 就像求负数的绝对值,彼此导来导去都可以。
7、 ************************************************** ************************* ************************************************** ************************* 补码的计算和引进补码的原因: 数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负). 这就是机器数的原码了.假设机器能处理的位数为8.即字长为1byte, 原码能表示数值的范围为(-127~-0 +0~127)共256个. 有了数值的表示方法就可以对数进行算术运算. 但是很快就发现用带符号位的原码进行乘除运算时结果正确, 而在加减运算的时候就出现了问题,如下: 假设字长为8bits
(1)10 - (1)10= (1)10+ (-1)10 = (1)10 。
本文到此讲解完毕了,希望对大家有帮助。