问题标签 [ones-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 投票
1 回答
102 浏览

c# - 比较列表

我想知道如何对联合 A 和 B 减去列表的元素进行补充。有这样做的功能吗?

0 投票
1 回答
416 浏览

c - 补码对 Fletcher 的校验和有影响吗?

弗莱彻校验和的维基百科文章指出:

这些示例假设补码算法,因为弗莱彻算法在补码机器上是不正确的。

这个 SO question提供了一本书的扫描,上面写着:

加法以 255 为模(1 的补码算术)

弗莱彻的校验和使用的是运行和,所以我看不到负数的必要性,目的是识别差异,所以只要在校验系统上使用相同的数字系统(一个补码,二进制补码,两者都不是)那么这有关系吗?维基百科页面上给出的示例也指定了无符号整数类型。

我已经用 C 标记了它,因为 Wikipedia 页面上给出的示例都是 C 语言,所以这可能与此有关。我不是一个数学家,也不是一个勉强能胜任的程序员,所以很可能有一些非常明显的原因说明补码会产生影响。

0 投票
1 回答
1583 浏览

ones-complement - 带符号的大小和 1 的补码

我有这个问题,我必须将这个 8 位有符号二进制数10110100转换为有符号幅度、1 的补码和 2 的补码。

对于有符号的幅度,我得到的值为-76。

对于 1 的补码,我知道我必须翻转所有位,所以我会得到01001011,但我的问题是这个 1 的补码中的第一位是 0,这意味着它是一个正数。有人可以向我解释如何将其变为负 1 的补数,而前面没有零吗?

0 投票
3 回答
502 浏览

c++ - 一个补码体系结构上的负零行为?

考虑以下关于反码体系结构的代码:

  • 代码会产生什么输出?
  • 标准定义了哪些行,哪些行取决于实现,哪些行是未定义的行为?
0 投票
3 回答
2194 浏览

twos-complement - RISC-V 是否要求二进制补码或一个补码符号,还是由实现确定?

我查看了 ISA 规范并在互联网上搜索了这个问题的答案,但我找不到它。

在 RISC-V ISA 中,负数应该用一个补码还是二进制补码表示?或者,这个决定是留给实施者的吗?

我问的原因是我正在编写一个 RV32I 模拟器,例如,这会影响我在模拟内存中存储负数的方式。

0 投票
1 回答
190 浏览

binary - 2 的补码的幂和

每个人都听过Bill Gosper 的这个笑话

任何给定的编程语言都是机器独立的神话很容易通过计算 2 的幂和来打破。

  • 如果结果以 period = 1 和符号 + 循环,则您在符号大小机器上。
  • 如果结果在 -1 处以 period = 1 循环,则您在一个二进制补码机器上。
  • 如果结果以句点 > 1 循环,包括开头,则您在一个补码机器上。
  • 如果结果以句点 > 1 循环,不包括开头,则您的机器不是二进制的——模式应该告诉您基数。
  • 如果内存不足,则说明您使用的是字符串或 Bignum 系统。
  • 如果算术溢出是一个致命错误,那么一些具有只读头脑的法西斯猪正在试图强制执行机器独立性。但是捕获溢出的能力取决于机器。

通过这种策略,考虑宇宙,或者更准确地说,考虑代数:

让 X = 2 的多次幂之和 = ...111111

现在将 X 添加到自身;

X + X = ...111110

因此,2X = X - 1 所以 X = -1

因此代数是在一个二进制补码的机器(宇宙)上运行的。

我想我理解其他部分,但我被困在补语部分。我将考虑一个 3 位加一个符号位的简单示例。

bignum 和非二进制架构的行为很清楚。

如果结果以 period = 1 和符号 + 循环,则您在符号大小机器上。

当 2 的幂溢出到符号位时,它变为负零,因此添加它不会改变任何内容。下一次迭代,它完全消失了,我们一遍又一遍地添加正零,保持在MAXINT.

例子:

这确实是一个周期为 1 且为正值的循环。

如果结果在 -1 处以 period = 1 循环,则您在一个二进制补码机器上。

当二的幂溢出到符号位时,它产生最小的可表示整数。将其添加到

例子:

果然,它在-1处循环。

如果结果以句点 > 1 循环,包括开头,则您在一个补码机器上。

那个,我想不通。我希望它应该去:

我尤其看不到它如何在大于 1 的周期内循环。这意味着 2 的幂不是简单地由左移产生的(否则单个 1 位最终会下降),但是它们是如何计算的呢?

0 投票
1 回答
202 浏览

java - 为什么 -2>>>1 在 Java 中等于 2147483647

-2的补码是 100000...01

-2的补码是 1000000...10

根据>>>定义左移 0

应该是这样的 01000......1,为什么变成了0111111..11

0 投票
1 回答
198 浏览

java - 〜在Java中是什么意思?

我在一个 Java 项目中发现了一个新符号,想知道它是什么意思?

~在这种情况下是什么意思?

0 投票
1 回答
54 浏览

java - 嘿,编程新手。我想将十进制数转换为符号大小

我确实知道如何在纸上做到这一点。问题是当我在代码上做的时候。我收到此错误:

不兼容的类型:从 int 到 byte 的可能有损转换

我知道我的二进制数被保存在一个字符串中,我想将那些 0 更改为 1,反之亦然,这就是为什么我有 if

这是我的代码:

0 投票
0 回答
92 浏览

logic - 1的补码和2的补码背后的逻辑

通过反转数字获得 1 的补码和 2 的补码背后的逻辑是什么,这种方法背后的数学推理是什么