问题标签 [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.
binary - 加减补码
使用六位 1 和 2 的补码表示我试图解决以下问题:
现在,我先取二进制的 12 和二进制的 7。
然后,我会翻转二进制补码的位并加一个吗?
然后,将这两个补码加在一起
现在,如果我有一个像
如果它是零,我会在 MSB 上添加一个符号幅度吗?
喜欢:
在翻转位之前,我会在最后添加一个 1 吗?
binary - 二进制乘法,2 的补码
我正在尝试学习二进制乘法,2 的补码负数。
我知道有一种简单的方法可以做到这一点。像符号扩展和初始部分产品。
我不知道如何继续。我什至不确定我是否完全正确。有人可以告诉我如何逐步做到这一点吗?我不想做任何其他方式。如果我这样做,大数字可能会很糟糕。谢谢
assembly - 如何将 > 128 的数字存储在有符号的一字节整数中?
我正在阅读《汇编语言艺术》一书。在那里我遇到了这一段。
如果 HO 位为零,则该数字为正数并存储为标准二进制值。如果 HO 位为 1,则该数为负数并以二进制补码形式存储。要将正数转换为其负数、二进制补码形式,请使用以下算法:
反转数字中的所有位,即应用逻辑
NOT
函数。将反转结果加一。
例如,要计算 8 位等效项
/li>-5
:
在这里我想知道如果0000 0101
是 5 的小数和 1111 1011 是 -5 那么我们如何表示251
?不一样1111 1011
吗?计算机如何区分 -5 和251
?
twos-complement - 为什么〜3在Python中等于-4?
我开始使用 Python 编程。我正在阅读基本教程,但这一点对我来说不是很清楚。我将不胜感激您能给我的任何帮助。
python - Python - 将二进制补码应用于字符串
我正在尝试将二进制补码添加到用字符串表示的二进制数中。假设字符串已经被翻转,我将如何将“添加”1 到最后一个字符,并根据需要替换字符串中的其他字符?
示例:100010 翻转为 011101,并表示为字符串。您如何将二进制补码应用于 011101 字符串?
真正让我感到困惑的一部分是,如果用户输入一个二进制数,当应用二进制补码时,会涉及很多携带。
c - C中负数的表示?
C如何表示负整数?
是通过二进制补码表示还是使用 MSB(最高有效位)?
-1
十六进制是ffffffff
.
所以请为我澄清这一点。
math - 补码证明
是否有可能通过归纳证明,对于所有长度为 n 的序列,任何 0 字符串的二进制补码总是会导致 0?
我正在尝试使用价值公式来做到这一点,即
值 = -a_n-1 x 2^(n-1) + summation{i=0 to n} (a_i x 2^i),其中 n = 字符串中的位数
language-agnostic - 围绕数字的硬件表示来思考:一个假设的二进制补码问题
这是一个非常幼稚的问题(我知道),但我认为这将是一个很好的起点,可以考虑如何实际执行 CPU 的基本指令集:
在二进制补码系统中,您不能反转您的实现可以表示的最大负数的符号。这样做的理论原因很明显,因为最大负数的取反将超出实现的范围(范围始终为
-128 到 127)。
但是,当您尝试对最负数执行否定运算时实际发生的情况非常奇怪。例如,在 8 位表示中,最大负数是 -128,或二进制的 1000 0000。通常,要否定一个数字,您会翻转所有位,然后加一个。但是,如果您尝试使用 -128 执行此操作,您最终会得到:
与您开始时使用的号码相同。出于这个原因,维基百科称其为“奇怪的数字”。
在同一篇维基百科文章中,它说上述否定
被检测为溢出条件,因为最高有效位进位但没有进位。
所以我的问题是:
A)这到底是什么意思?和
B) 似乎 CPU 每次执行基本算术运算时都需要执行额外的错误检查步骤,以避免与此否定相关的事故,从而产生大量开销。如果是这种情况,为什么不截断可以表示的数字范围以将奇怪的数字排除在外(即 8 位为 -127 到 127)?如果不是这样,您如何在不产生额外开销的情况下实施此类错误检查?
c++ - 解释一行二进制补码数学计算空闲虚拟内存
我有一个适用于 Windows Mobile 6.x 的 Visual Studio 2008 C++ 应用程序,我正在计算给定进程可用的空闲虚拟内存量。(我意识到它没有考虑到碎片。)我的代码看起来基本上是这样的:
我可以用其他 API 确认这似乎工作得很好。我的问题是这条线在做什么:
为什么这不仅仅是:
我在MSFT 员工罗斯乔丹的Usenet帖子上找到了前一行。
谢谢,保罗
编辑:
例如。对于进程槽 2,这是每个空闲内存块的列表,其中包含由 Ross Jordan (RS) 算法和 RegionSize (RS) 给出的空闲内存量。
编辑2:
汉斯带领我找到了答案。这只是一种奇特的方式,但假设分配大小为 64KB。
c# - 为什么 -3==~2 在 C#
无法理解。为什么输出“相等”
代码:
输出: