21得票2回答
如何进行整数的二进制补码乘法和除法?

我已阅读了关于使用二进制补数进行乘法的这篇文章,但对我来说并不是很清楚。即使是在我阅读维基百科关于此问题的文章时也有困难。我想知道如何计算负数的乘法:eg: -1 with -7 should give 7. A 4-bit, 2's complement of -1 is : 1111 A ...

93得票20回答
Python中的二进制补码

Python中是否有一个内置函数可以将二进制字符串(例如'111111111111')转换为补码整数-1?

14得票2回答
x86中的进位/溢出和减法

我试图理解x86中的溢出和进位标志。 据我所知,对于有符号2进制数的加法,这些标志只能通过以下四种方式之一产生(我的示例是4位数): pos+pos = neg(溢出) 0111 + 0001 = 1000(7 + 1 = -8) pos+neg = pos(进位) 0011 + ...

7得票2回答
在IT技术中,加减运算常用的是二进制补码。如何进行二进制补码的加减法呢?

使用六位一和二补码表示法,我正在尝试解决以下问题: 12 - 7 现在,我首先将十二和七转换为二进制。 12 = 001100 - 6 bit 7 = 000111 - 6 bit 那么,我是不是要翻转补码的二进制位并加一呢? 12 = 110011 ones comple...

8得票1回答
保证在二进制补码中左移负数时结果为负数?

假设负的二进制数是用二进制补码表示的,我们怎样才能保证符号不变呢? 假设我们用四位来表示十进制数-5: 1011,现在想左移一位以乘以2: 1011 << 1 这个操作返回0110,即6,而不是我们所希望的-10。 (我认为这只适用于第二位为0的负数,即某个范围内最小可表...

14得票3回答
Java中将2的补码十六进制数转换为十进制数

我有一个代表2的补码数的十六进制字符串。有没有一种简单的方式(库/函数)将十六进制转换为十进制,而不直接使用其位?例如,给定左侧的十六进制,下面是期望输出:"0000" => 0 "7FFF" => 32767 (max positive number) "8000" => ...

14得票1回答
如何从八个(8)4位整数创建一个32位整数?

假设我有一个最大的32位整数 - const a = ((2 ** 32) - 1) const b = parseInt("11111111111111111111111111111111", 2) // 32 bits, each is a one! ...

15得票1回答
如果只需要低位结果,哪些2补数整数运算可以在不将输入高位清零的情况下使用?

在汇编编程中,经常需要从一个寄存器的低位计算出某些内容,而该寄存器并不保证其他位为零。在高级语言(如C)中,你只需将输入强制转换为小尺寸,让编译器决定是否需要单独清零每个输入的高位,或者是否可以在计算结果后截取结果的高位。 这在x86-64(也称为AMD64)中特别常见,原因有很多1,其中一...

18得票6回答
为什么要使用二进制补码?

我正在编写一个教授儿童(9岁到13岁)编程的教程。我从计算机本身开始,这与计算机科学关系不大,更多地涉及解决计算问题所涉及的过程。 基于这个起点,我引导他们理解机器可以帮助我们解决某些计算问题。人类擅长抽象思维和想象力,但是计算机在遵循严格规定的例程方面非常出色。它们可以以惊人的速度一遍又一...

12得票1回答
NEG指令如何影响x86上的标志位?

英特尔软件开发手册对neg指令如下描述: 如果源操作数为 0,则 CF 标志位设置为 0;否则设置为 1。OF、SF、ZF、AF 和 PF 标志根据结果设置。 我认为如果将 neg %eax 替换为以下代码,那么 AF 和 CF 应该被设置:not %eax # bitwise...