问题标签 [bitfoo]

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 回答
9114 浏览

language-agnostic - 锯齿形解码

在 google protocol buffers encoding overview中,他们引入了一种称为“Zig Zag Encoding”的东西,它采用小幅度的有符号数字,并创建一系列小幅度的无符号数字。

例如

等等。他们为此提供的编码功能相当聪明,它是:

我了解它是如何工作的,但是,我终其一生都无法弄清楚如何将其反转并将其解码回有符号的 32 位整数

0 投票
2 回答
475 浏览

language-agnostic - 找到正确 kademlia 存储桶的最简单方法

Kademlia 协议中,节点 ID 是 160 位数字。节点存储在桶中,桶 0 存储除最后一位之外与该节点具有相同 ID 的所有节点,桶 1 存储除最后 2 位之外与该节点具有相同 ID 的所有节点,以此类推为所有 160 个存储桶打开。

找到我应该将新节点放入哪个存储桶的最快方法是什么?

我将存储桶简单地存储在一个数组中,并且需要这样的方法:

显而易见的方法是从最重要的位开始,逐位比较,直到找到不同之处,我希望有一个基于聪明位旋转的更好方法。

实用说明:我的 Int160 存储在一个包含 20 个项目的字节数组中,优先考虑适用于这种结构的解决方案。

0 投票
4 回答
493 浏览

algorithm - 设置数组的最后 N 位

我确信这很简单,但是我有一个主要的心理障碍,所以我需要一点帮助!

我有一个由 5 个整数组成的数组,该数组已经填充了一些数据。我想将数组的最后 N设置为随机噪声。

这在很大程度上与语言无关,但我在 C# 中工作,所以 C# 中的答案加分

0 投票
4 回答
3661 浏览

c# - 添加到位数组

在我的程序中,我使用 BitArrays 来表示 160 位数字。我希望能够加、减、递增和递减这些数字,这样做的算法是什么?

目前我对乘法和除法不感兴趣,但我将来可能会为此加分。

我正在用 C# 实现,但如果您不熟悉该语言,伪代码也可以

0 投票
10 回答
1042 浏览

c# - 以两个字节查找公共前缀的长度

给定两个字节,我如何找到两个字节开头的公共位的长度。

例如:

我在 C# 中工作,所以请只使用 C# 操作。

附录:这段特定的代码将运行数千次,并且需要非常快。