-128的8位补码是:1000 0000B,换算成十进制就是 128。
负数的补码,是用“模”计算出来的,即:
[X]补 = 256 - |X| = 256- |-128| = 128。
不要用“求反加一”来算,那只不过是一个经验公式而已。
讯享网
讯享网
一.反码的范围反码表示法规定:正数的反码与其原码相同。负数的反码是对其原码逐位取反,但符号位除外。在规定中,8位二进制码能表示的反码范围是-127~127。-128没有反码。那么,为什么规定-128没有反码呢?下面解释。首先看-0,[-0]原码=1000 000,其中1是符号位,根据反码规定,算出[-0]反码=1111 1111,再看-128,[-128]原码=1000 000,假如让-128也有反码,根据反码规定,则[-128]反码=1111 1111,你会发现,-128的反码和-0的反码相同,所以为了避免面混淆,有了-0,便不能有-128,这是反码规则决定的。二.原码 反码 补码的范围8位二进制数。原码 -127~127 -128呢???不是说-128有原码 是1000 0000吗??反码 -127~127补码 -128~127对于n位二进制数:
讯享网你会发现,补码比其它码多一位,这是为什么呢?问题出在0上。[+0]原码=0000 0000, [-0]原码=1000 0000[+0]反码=0000 0000, [-0]反码=1111 1111[+0]补码=0000 0000, [-0]补码=0000 0000你会发现,+0和-0的补码是一样的。即 0的补码只有一种表示。这里解释一下[-0]补码是怎么得来的。负数的补码就是反码整体加一。符号位上的进位舍弃。(所以,舍弃了符号位的补码的第一位是数值位,不是符号位,符号位舍弃了)另外解释一下原码符号位和补码符号位的关系,补码的符号位不是保持原码的第一位不变,而是 符号位不变,[-0]反码的第一个1是符号位,尾数中的7个1是数值位,尾数加一后,数值位产生了进位,1111 1111+1=1 0000 0000(计算补码的过程中,并不是先保证第一位不变,而是保证符号位不变,保证补码规则是反码整体加一)。所以,补码能表示的数的个数中,比原码反码少了一个,所以补码可以多表示一个真值为-128的数。但是,多表示的这个数-128比较特殊,只有原码和补码,没有反码。-128的补码是1000 0000。三.-128的补码为什么是1000 00008位二进制的原值表达范围为:-127至127


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/58385.html