问题标签 [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 投票
6 回答
11584 浏览

c - 需要帮助理解 K&R C 第 2 章中的“getbits()”方法

在第 2 章,关于按位运算符的部分(第 2.9 节)中,我无法理解其中一种示例方法的工作原理。

这是提供的方法:

这个想法是,对于给定的数字x,它将返回从位置p开始的n位,从右侧开始计数(最右边的位是位置 0)。给定以下方法:main()

输出是:

getbits(63892 (f994), 4, 3) = 5 (5)

我得到了其中的一部分,但在“大图”方面遇到了麻烦,主要是因为我不理解的位(不是双关语)。

我特别有问题的部分是补充部分:~(~0 << n). 我想我得到了第一部分,处理x;这是我正在努力解决的部分(然后是掩码)——以及它们是如何结合在一起来实际检索这些位的。(我已经验证了它正在做的事情,包括代码和使用 calc.exe 检查我的结果——感谢上帝,它有一个二进制视图!)

有什么帮助吗?

0 投票
18 回答
231336 浏览

operators - 按位补码运算符 (~ tilde) 是如何工作的?

为什么〜2等于-3?运营商是如何~工作的?

0 投票
7 回答
79439 浏览

binary - 正数的二进制补码表示法是同一个数吗?

正数的二进制补码符号是否与其二进制表示相同?

0 投票
8 回答
4218 浏览

java - 为什么 C、C++、Java 不使用一个补码?

我听说 C、C++、Java 使用两个补码来表示二进制。为什么不使用 1 补码?使用 2 补码超过 1 补码有什么优势吗?

0 投票
1 回答
655 浏览

c++ - C++:计算一个数字的补码及其可能不匹配的数量

我的算法有点卡住了,我需要一些帮助来解决我的问题。我认为一个例子可以更好地解释我的问题。

假设:

  • d = 4(一个数字中允许的最大位数,2^4-1=15)。
  • m_max = 1(允许的最大位数不匹配)。
  • kappa =(对于给定的 d 和 m,要查找的最大元素数,其中 m 在 m_max 中)

主要思想是对于给定的数字 x,计算其补数(以二进制为基数)以及与 x 补数的最多 m_max 不匹配的所有可能组合。

现在程序开始从 i = 0 扫描到 15。

  • 对于 i = 0 和 m = 0,kappa = \binom{d}{0} = 1(这称为完美匹配)可能的位组合只有 1111(对于 0: 0000)。

  • 对于 i = 0 和 m = 1,kappa = \binom{d}{1} = 4(一个不匹配)可能的位组合是:1000、0100、0010 和 0001

我的问题是将其推广到一般 d 和 m。我写了以下代码:

我陷入了困境,v[i][counter++] = v[i][0] ^ bits_mask因为我无法将我的算法推广到 m_max>1,因为我需要 m_max 不匹配 m_max 循环,并且在我的原始问题中,m 在运行时之前是未知的。

0 投票
1 回答
596 浏览

sql - 寻找补充日期范围?

我有两个表,它们都有列 StartDate 和 EndDate。

我正在尝试返回一个结果集,其中包含一个表(TableA)中的所有日期范围,以及另一个表(TableB)中的所有补充日期范围。

三个数据集的预期结果集应该是:

日期范围不能保证是连续的,我不能对它们如何在表格之间重叠做出任何假设......在每个表格中,它们可以被假设为不重叠。

我在思考如何将 TableB 中的单个日期范围拆分为多个部分以在 SQL 中查找其中的所有补码“区域”时遇到问题。

有人有什么建议吗?

0 投票
2 回答
2227 浏览

python - 如何绘制网络图的补码?

该Graphviz中的任何功能可以做到这一点?如果没有,还有其他可以做到这一点的免费软件吗?

0 投票
3 回答
5782 浏览

c# - 在 C# 中查找两个集合的补集的最快方法

我有两个ICollection<MyType>名为c1and的类型集合c2。我想找到 inc2而不是 in的一组项目c1,其中相等的启发式是Idon 的属性MyType

在 C# (3.0) 中执行此操作的最快方法是什么?

0 投票
2 回答
2684 浏览

bash - 在 Bash 中取反无符号数

我有一个数字(十六进制),我想要它的补码。例如,如果X = 20我想让 bash 执行否定并返回Y = ~X = DF。它不必在 bash 中,但它应该使用我可以包装到脚本中的常用命令行工具。另请注意,这些数字都应该是无符号的,我希望它们不会溢出可用的位(例如,20只有 8 位,所以输出应该是 8 位的反码)。

我使用 bash 和 bc 尝试了各种方法,但没有找到合适的组合。有任何想法吗?

(如果有人关心,目标是将 IRQ 关联设置到特定 CPU,然后将其他 IRQ 设置到所有其他处理器。)

0 投票
7 回答
42907 浏览

java - 如何在 Java 中反转无符号字节的位?

我正在尝试为一种非常简单的加密类型编写解码器。通过扫描仪输入 0-255 之间的数字,位被反转,然后转换为字符并打印。

例如,数字 178 应转换为字母“M”。

178 是 10110010。

反转所有位应给出 01001101,即 77 或“M”作为字符。

我遇到的主要问题是,据我所知,Java 不支持无符号字节。我可以将值读取为 int 或 short,但是由于额外的位,这些值将在转换过程中关闭。理想情况下,我可以只使用按位补码运算符,但我认为如果我使用有符号数字这样做,我最终会得到负值。关于我应该如何处理这个问题的任何想法?