感悟网 导航

如何求补码?

作者&投稿:宓从 (若有异议请与网页底部的电邮联系)
~ 原码:

正整数的原码:这个数的二进制,符号位为0;正整数的原码=补码=反码

例1:+66

66的二进制:1000010,所以+66的原码: 0 1000010 =补码: 0 1000010=反码: 0 1000010

负整数的原码:仍是这个数的二进制,符号位为1;负整数的原码、反码、补码计算:先求原码,再求反码,最后求补码;

原码转换为反码:符号位不变,数值位按位取反;

原码转换为补码:符号位不变,数值位按位取反,末尾在+1;

例2:-66

66的二进制:1000010,所以-66的原码:1 1000010  补码:1 0111101 反码:1 0111110

二、二进制原码、反码、补码的加减运算及标志位

1.补码加减基本公式

加法:

整数 [A]补+[B]补=[A+B]补 (mod 2n+1)

小数 [A]补+[B]补=[A+B]补 (mod 2)jianfa

减法:

整数 [A-B]补=[A]补+[-B]补 (mod 2n+1)

小数 [A-B]补=[A]补+[-B]补 (mod 2)

2.标志位

CF(Carry Flag) :   进为标志位。主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。在8位二进制中,如果计算的结果超过 [0,255] 的范围,就有进位,CF就被置为1,如果结果再 [-128,127] 范围内,就是没有进位CF被置为0。

OF(Overflow Flag) :溢出。用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。在8位二进制中,如果一个运算的结果最终超过 [-128,127] 无论是大于127还是小于-128就被认为是溢出,OF被置为1,如果结果在 [-128,127] 就认为没溢出OF被置为0。

SF(Sign Flag) :符号标志。用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。

ZF(Zero Flag) :零标志。用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。

PF(Parity Flag) :奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。

AF(Auxiliary Carry Flag) :辅助进位标志。在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:(1)、在字操作时,发生低字节向高字节进位或借位时;(2)、在字节操作时,发生低4位向高4位进位或借位时。

《二进制数的补码怎么求?》
答:二进制数的补码怎么求如下:二进制补码的运算法则是0+0=0,向前进位为0;1+1=0,向前进位为1;1+0=1向前进位为0。运算结果如果最高位为零,则结果为正,最高位为一,结果为负。补码运算的结果仍然是补码。1、二进制补码的计算方法:二进制的补码计算非常简单,各种教材中也经常使用二进制来...

《如何计算负数的原码、反码和补码?》
答:原码权重:符号位(1代表负数) 64 32 16 8 4 2 1。反码:负数符号位不变,其余取反。补码:负数符号位不变,其余反码+1。-32 原码:1010 0000 反码:1101 1111 补码:1110 0000

《反码补码怎么算》
答:+100表示为2进制数为+1100100 原码=01100100 反码=01100100 补码=01100100 -100表示知为2进制数为-1100100 原码=11100100 反码=10011011 补码=反码+1=10011100 正数的补码,反码都等于原码;负数的反码等于原码除符号位(最高位)以外其它位按位取反,补码则为反码加1;由补码求原码也是相同的原则,先算...

《已知真值求补码》
答:第一题:x+y真值十进制为-19 X+Y原码为10010011,反码为11101100,补码为11101101(负数的反码符号位不变其余各位取反,补码在其反码上加1) 第二题:x+y=35 X+Y的原码,反码,补码均为00100011(正数补码反码原码均一样) 所有码均为8位,其中第一位为符号位 ...

《怎样求一个数的补码?比如-114,请写出具体步骤,谢谢!》
答:正数的补码与原码相同,这个就不说了。负数的补码:符号位为1,其余位为该数绝对值的原码按位取反,然后整个数加1。求-114的补码 第一步:+114:01110010 第二步:按位取反(1变成0,0变成1),然后加1。10001101+1 最后结果:10001110

《原码、反码的补码怎么求?》
答:-2 的补码,是:254 = 1111 1110。。。-128 的补码是:128 = 1000 0000。此时,楼主的问题,就解决了。补码的定义式:X >= 0, [ X ]补 = X;正数不用变换。X < 0,  [ X ]补 = X + 2^n。 n 是补码的位数。按此公式求补码,是极为简便的,而且还能理解补码的意义。--...

《如和求16进制的补码?比如举个例子2和-32的16进制补码如何求?》
答:在二进制中对8位的补码是这样求的:求n的补码,用256-n 那么同样在十六进制中若是求四位的n的补码,则用16*16*16*16-n即可 若n是负数,则16的四次方加上n 同理对于x位的用16的x次方进行操作

《十六进制的补码怎么计算?》
答:无论是十进制还是十六进制的数,在求补码时,都先转化为二进制,再进行补码的转换。例如:15的十六进制为F,转化为二进制为00001111,再转为反码00001111,最后转化为补码00001111。正整数的补码是其二进制表示,与原码相同。

《负数的补码怎么求呢?》
答:举例 某linux平台设置了默认的目录权限为755(rwxr-xr-x),八进制表示为0755,那么,umask是权限位755的反码,计算得到umask为0022的过程如下:原码0755= 反码 0022 (逐位解释:0为符号位,0为7-7,2为7-5,2为7-5)(四)补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位...

《知道一个数,如何求补码》
答:正数的原码,反码,补码是一样的。只有负数才有补码。负数的补码等于:保留符号位,用其它位的反码加上1就成了。16449535 是超界的 3字节正数。怎样处理成3字节负数我不知道。若用4字节书写,16449535 的 16进制是 0x00faffff。若用4字节书写,-16449535 的 16进制是 ff050001。你可以考虑一下,...

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网