twos-complement

    1热度

    1回答

    我不明白为什么一个n位2C系统编号可以通过使位bn = bn-1扩展到(n + 1)位2C系统编号,即扩展到(n +1)位复制符号位。

    1热度

    1回答

    我想知道是否有一种方法可以像使用Python中的C/C++一样使用标准库(最好是在一个bitarray上)进行二进制补码的扩展。 C/C++: // Example program #include <iostream> #include <string> int main() { int x = 0xFF; x <<= (32 - 8); x >>= (3

    0热度

    2回答

    给定一个正整数(如171)和一个“寄存器”大小,例如8. 我想要的是由二进制表示171表示的整数,即'0b10101011'被解释为二进制补码。 在本案中,171应该变成-85。 这是消极的,因为给予“注册”大小8,MSB是1. 我希望我设法解释我的问题。 我该如何做这种转换? 我试了一下: size = 8 value = 171 b = bin(value) if b[len(b)-

    0热度

    1回答

    考虑两个简单的功能: int return0Comp(){ return (~0); } int returnNeg1(){ return -1; } 我知道一个二进制补码系统,~0==-1,但对一个系统未使用该关闭的机会(?不,即使发生*)这两个函数会返回不同的值吗?

    3热度

    2回答

    我看到,当我用two's complement减去正数和负数时,我得到溢出。例如,如果我减去1 2我得到: 2 = 0010 1 = 0001 -> -1 = 1111 2 + (-1) -> 0010 + 1111 = 10001 所以这里的结果是左五位10001 - 是溢出了吗? 我发现这些规则来检测溢出二进制补码: 如果两个正数的总和产生了负结果,总和 溢出。如果两个负数的总和得到正

    1热度

    1回答

    使用6-bit二进制补码算术,在任何这些情况下是否发生溢出?我相信有问题b,但没有溢出。 (a) 11001 + 01000 (b) 10111 – 00110 (c) 00111 + 01100 (d) 10110 + 00011 我之所以说b是随身携带的一个例子,而不是溢出,因为结果是所添加的两个数字的符号相同,即使是有进位。

    1热度

    1回答

    可以说我有一个整数(32位),它存储一个n位无符号数(带有n < 32)。 如何使用二进制补码将其有效转换为符号解释? 一个简短的例子来阐明我的意思: int numUnsigned = 15; // Store a 4-bit value 0b1111 int numSigned = ???; // Convert to 4-bit signed value using two's compl

    1热度

    1回答

    的Wikipedia article for Fletcher's checksum状态: 这些示例假设补运算,为弗莱彻的算法将是一个补机不正确。 This SO question从一本书,上面写着提供扫描:执行 加法模255(1的补数算术) 弗莱彻的校验和使用的运行总和,所以不看到对负数的需求,其目的是识别差异,所以只要在检查系统上使用相同的数字系统(补码,二进制补码,两者都没有),那么这很重要

    2热度

    1回答

    我正在修改我在几周内完成的考试。我有一个我已经回答的示例问题,但我不确定它是否正确。有人可以请我验证我的答案,并解释哪里出错,如果它不正确。 这里有一个问题: 考虑符号 - 幅度表示法两个二进制变量:A = 011111和B = 000001显示涉及的所有步骤,以二进制格式执行以下操作(即不从二进制转换为另一种基数以获得结果)。假设你只有六位可用于答案。 A-B使用二进制补码。 这里是我的回答:

    3热度

    2回答

    我们都知道通常负数在内存中表示作为这样的 from x to ~x + 1 ,并获得二的补数回到我们不这样做明显的东西一样 ~([~x + 1] - 1) 而是我们做 ~[~x + 1] + 1 有人可以解释为什么它总是工作?我想我可以用1位,2位,3位数来证明它,然后使用数学归纳法,但它并不能帮助我理解它的工作原理。 谢谢!