问题标签 [bitstring]

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

java - 来自预序位串的二叉树

我需要从预排序位串(通过管道传输到流中的标准输入)构建二叉树,我想知道我对此的理解是否正确。

如果我有一个 11110001000 的预购位串(其中 1 表示内部节点,0 表示外部节点),会产生这样的二叉树吗?

从前序位串(通过输入给出)构建二叉树后,我还需要找到高度、路径长度以及二叉树是否完整。但是,我在前进到能够做到这一点时遇到了麻烦,因为我不知道如何开始在 Java 中实现预排序位串 -> 二叉树转换。任何人都可以提供有关我如何开始从预购位串构建二叉树的提示吗?

0 投票
2 回答
929 浏览

java - 从前序位串构建二叉树

我正在尝试完成一项任务,但第一步遇到了麻烦。下面的链接是上下文的分配:

https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1DkmkmuB-leNDVmMDU0MDgtYmQzNC00OTdkLTgxMDEtZTkxZWQyYjM4OTI1&hl=en

示例输入是:

a0
0 a00
ab000

这给出了以下输出:

树 1:
无效!
树 2:
高度:-1
路径长度:0
完成:是
后排序:
树 3:
高度:0
路径长度:0
完成:是
后排序:a
树 4:
高度:1
路径长度:1
完成:是
后排序:ba

我无法在作业上取得进展,因为我一直坚持从输入实际构建二叉树。到目前为止,我能够提出的代码如下:

我正在尝试测试我是否使用预排序方法正确构建了二叉树,但是每当我运行程序时,它似乎都卡在某个地方的无限循环中。谁能帮忙指出是什么原因造成的?我真的在正确的轨道上吗?有人对我应该如何构建这个特定的二叉树有任何提示吗?

谢谢。

0 投票
4 回答
2727 浏览

java - 无法正确创建二叉树?

我正在尝试使用 Java 从通过管道传输到 System.in 的字符串输入构建二叉树。每当在字符串中遇到来自 az 的字母时,我都会创建一个内部节点(有 2 个子节点)。每当在字符串中遇到 0 时,我都会创建一个外部节点(叶子)。该字符串是预先订购的,所以作为一个例子,如果我有一个输入,例如:

abcd000e000

我应该制作以下二叉树

至少这是我认为我应该根据作业详细信息(在下面的链接中)所做的。我们还获得了整个程序的示例输入和输出:

输入

a0
0 a00
ab000

输出

树 1:
无效!
树 2:
高度:-1
路径长度:0
完成:是
后排序:
树 3:
高度:0
路径长度:0
完成:是
后排序:a
树 4:
高度:1
路径长度:1
完成:是
后排序:ba

我正在尝试使用 Java 实现一个可以为我执行此操作的程序,但我认为我没有正确地制作二叉树。我已经提供了到目前为止我提出的代码,并在每种方法上方的注释中详细说明了到目前为止我在调试时遇到了什么麻烦。如果需要更多上下文,以下链接详细说明了整个分配以及最终目标应该是什么(构建二叉树只是第一步,但我坚持下去):

作业链接

谁能帮助我正确构建二叉树并指出我做错了什么会导致我目前得到的输出?我至少在正确的轨道上吗?有什么提示吗?

谢谢。

编辑:b 这是“方形”输出的图片(这是在 Eclipse 中)。

0 投票
3 回答
2154 浏览

python - 使用 Python 位串测量霍夫曼编码的效率

我有以下字符串,我想对其进行霍夫曼编码并有效地存储到一个位数组中:

中符号的频率为sequence

我将其翻译成霍夫曼代码字典:

然后,我使用 Pythonbitstring包将字符串逐个字符地转换为BitArray类的实例,我称之为bitArray,其中包含用其各自的霍夫曼代码编码的每个字符的位:

这是以字节为单位的位数组:

我必须使用tobytes()而不是bytes,因为我生成的位数组不会均匀地分成 8 位段。

当我计算BitArray表示的存储效率(位数组和输入字符串的大小之比)时,我得到的性能比不编码输入字符串时更差:

我是否正确测量存储效率?(如果我对更长的输入字符串进行编码,这个比率会提高,但它似乎接近 0.28 左右的渐近极限。我想确认这是否是衡量事物的正确方法。)

编辑

以下两种方法产生不同的答案:

我不确定该相信哪个。但是在将数据写入存储的过程中,我认为我需要字节表示,这使我倾向于选择第一个结果。

0 投票
1 回答
172 浏览

python - 我可以在内存中存储带有位串值的字典而不进行填充吗?

我有一个从一些哈希键到位串的字典。位串可以是可变长度,但通常 < 160 位并且通常 <80。我有大约 80M 键值对。

如何将这个数据结构存储在尽可能少的内存中?我不想填充位串,否则我会失去相当多的空间(不是双关语)。

我假设我必须在开头存储一个字节,给出位字符串的长度。没关系。

将此字典存储在内存中的最节省内存的方法是什么?

我更喜欢使用 Python,但对其他选择持开放态度。

0 投票
3 回答
1127 浏览

matlab - 将 Matlab 函数结果缓存到文件

我正在用 Matlab 写一个模拟。我最终会运行这个模拟数百次。在每次模拟运行中,都有数百万个模拟周期。在每个循环中,我都会计算一个非常复杂的函数,需要~0.5sec 才能完成。0函数输入是一个长位数组(>1000 位) - 它是一个和的数组10我将位数组保存在and的矩阵中1,并且对于其中的每一个我只运行一次函数 - 因为我将结果保存在不同的数组 (res) 中并在运行函数之前检查位数组是否在矩阵中:

我有两个问题,真的:

  1. 有没有比“ismember”更有效的方法来查找矩阵中行的索引?

  2. 由于我多次运行模拟,并且我得到的位数组中有很大的重叠,我想在运行之间缓存矩阵,这样我就不会一遍又一遍地重新计算相同的位数组上的函数再次。我怎么做?

0 投票
2 回答
6173 浏览

erlang - Erlang中的二进制和位串有什么区别?

在 Erlang shell 中,我可以执行以下操作:

但是当我尝试以下操作时:

在第一种情况下,我采用一个整数并使用位串语法将其放入一个 32 位字段中。这按预期工作。在第二种情况下,我使用term_to_binaryBIF 将元组转换为二进制文件,我尝试使用位串语法从中解压缩某些位。为什么第一个示例有效,但第二个示例失败?似乎他们都在做非常相似的事情。

0 投票
2 回答
4209 浏览

c++ - 在指定位偏移处读取/写入值

我需要在内存缓冲区中的指定位偏移处读取和写入指定位长(不一定是 8 的倍数)的数值,首先是最重要的位。

例如,在偏移量 6 和位长 4 处写入值 5:

所以我正在寻找的功能可能是这样定义的:

以及示例用法:

这些函数将用于在相对较大的缓冲区中读取/写入少量值(过滤大量网络流量),因此我丢弃(可能是错误地)使用std::bitset.

是否有任何现有的库可用于实现/简化此任务?关于实施它有什么建议吗?

0 投票
2 回答
1644 浏览

python - 如何使用位串读取完整的文件

我想从文件中读取尽可能多的 24 位块。 当我现在不知道有多少块时,如何使用位串的ConstBitStream来做到这一点?

目前我这样做:

(这里我要预先计算事件的数量)

0 投票
2 回答
1045 浏览

list - Erlang 位索引

我目前正在尝试学习erlang,我想做的是对存储在位数组或int中的数组的特定索引执行操作。如果某个位置有 0,则不使用该位置的数组索引。

因此,设想以下内容:

我的功能是形式

我需要有关 get_subarray_from_bitarray() 的帮助。我知道 erlang 对位字符串有特殊的语法(类似于 <<>>),所以有没有一种有效的方法来索引位数组以获取索引?