问题标签 [twos-complement]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
49201 浏览

binary - 加减补码

使用六位 1 和 2 的补码表示我试图解决以下问题:

现在,我先取二进制的 12 和二进制的 7。

然后,我会翻转二进制补码的位并加一个吗?

然后,将这两个补码加在一起

现在,如果我有一个像

如果它是零,我会在 MSB 上添加一个符号幅度吗?

喜欢:

在翻转位之前,我会在最后添加一个 1 吗?

0 投票
2 回答
21894 浏览

binary - 二进制乘法,2 的补码

我正在尝试学习二进制乘法,2 的补码负数。

我知道有一种简单的方法可以做到这一点。像符号扩展和初始部分产品。

我不知道如何继续。我什至不确定我是否完全正确。有人可以告诉我如何逐步做到这一点吗?我不想做任何其他方式。如果我这样做,大数字可能会很糟糕。谢谢

0 投票
2 回答
528 浏览

assembly - 如何将 > 128 的数字存储在有符号的一字节整数中?

我正在阅读《汇编语言艺术》一书。在那里我遇到了这一段。

如果 HO 位为零,则该数字为正数并存储为标准二进制值。如果 HO 位为 1,则该数为负数并以二进制补码形式存储。要将正数转换为其负数、二进制补码形式,请使用以下算法:

  1. 反转数字中的所有位,即应用逻辑NOT函数。

  2. 将反转结果加一。

    例如,要计算 8 位等效项-5

    /li>

在这里我想知道如果0000 0101是 5 的小数和 1111 1011 是 -5 那么我们如何表示251?不一样1111 1011吗?计算机如何区分 -5 和251?

0 投票
5 回答
1011 浏览

twos-complement - 为什么〜3在Python中等于-4?

我开始使用 Python 编程。我正在阅读基本教程,但这一点对我来说不是很清楚。我将不胜感激您能给我的任何帮助。

0 投票
3 回答
3311 浏览

python - Python - 将二进制补码应用于字符串

我正在尝试将二进制补码添加到用字符串表示的二进制数中。假设字符串已经被翻转,我将如何将“添加”1 到最后一个字符,并根据需要替换字符串中的其他字符?

示例:100010 翻转为 011101,并表示为字符串。您如何将二进制补码应用于 011101 字符串?

真正让我感到困惑的一部分是,如果用户输入一个二进制数,当应用二进制补码时,会涉及很多携带​​。

0 投票
4 回答
23506 浏览

c - C中负数的表示?

C如何表示负整数?

是通过二进制补码表示还是使用 MSB(最高有效位)?

-1十六进制是ffffffff.

所以请为我澄清这一点。

0 投票
3 回答
3696 浏览

math - 补码证明

是否有可能通过归纳证明,对于所有长度为 n 的序列,任何 0 字符串的二进制补码总是会导致 0?

我正在尝试使用价值公式来做到这一点,即

值 = -a_n-1 x 2^(n-1) + summation{i=0 to n} (a_i x 2^i),其中 n = 字符串中的位数

0 投票
4 回答
388 浏览

language-agnostic - 围绕数字的硬件表示来思考:一个假设的二进制补码问题

这是一个非常幼稚的问题(我知道),但我认为这将是一个很好的起点,可以考虑如何实际执行 CPU 的基本指令集:

在二进制补码系统中,您不能反转您的实现可以表示的最大负数的符号。这样做的理论原因很明显,因为最大负数的取反将超出实现的范围(范围始终为
-128 到 127)。

但是,当您尝试对最负数执行否定运算时实际发生的情况非常奇怪。例如,在 8 位表示中,最大负数是 -128,或二进制的 1000 0000。通常,要否定一个数字,您会翻转所有位,然后加一个。但是,如果您尝试使用 -128 执行此操作,您最终会得到:

与您开始时使用的号码相同。出于这个原因,维基百科称其为“奇怪的数字”。

在同一篇维基百科文章中,它说上述否定

被检测为溢出条件,因为最高有效位进位但没有进位。

所以我的问题是:
A)这到底是什么意思?和
B) 似乎 CPU 每次执行基本算术运算时都需要执行额外的错误检查步骤,以避免与此否定相关的事故,从而产生大量开销。如果是这种情况,为什么不截断可以表示的数字范围以将奇怪的数字排除在外(即 8 位为 -127 到 127)?如果不是这样,您如何在不产生额外开销的情况下实施此类错误检查?

0 投票
1 回答
310 浏览

c++ - 解释一行二进制补码数学计算空闲虚拟内存

我有一个适用于 Windows Mobile 6.x 的 Visual Studio 2008 C++ 应用程序,我正在计算给定进程可用的空闲虚拟内存量。(我意识到它没有考虑到碎片。)我的代码看起来基本上是这样的:

我可以用其他 API 确认这似乎工作得很好。我的问题是这条线在做什么:

为什么这不仅仅是:

我在MSFT 员工罗斯乔丹的Usenet帖子上找到了前一行。

谢谢,保罗


编辑:

例如。对于进程槽 2,这是每个空闲内存块的列表,其中包含由 Ross Jordan (RS) 算法和 RegionSize (RS) 给出的空闲内存量。


编辑2:

汉斯带领我找到了答案。这只是一种奇特的方式,但假设分配大小为 64KB。

0 投票
6 回答
1765 浏览

c# - 为什么 -3==~2 在 C#

无法理解。为什么输出“相等”

代码:

输出: