问题标签 [bits]

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

c++ - 位运算 (C++)

最近我在面试中遇到了一个问题——我被要求从性能方面比较按位运算。

比如,简单介绍一下不同位操作的性能。

我想这个问题可能非常笼统且非常特定于机器,但我也认为应该有一些关于这个的一般规则,你必须提到(我没有:)。

那么——你会怎么回答?

我可能还应该说,比较它们在 C (或 C++ 等)中的性能可能是一个好主意,因为我假设这些语言为编译器提供了更多空间来执行与位相关的优化。

谢谢你。


好的,完整的问题上下文。

采访有几个部分,其中一些真的是小菜一碟,有些是一场噩梦。与位相关的部分有点难,包括以下问题:

  • 浮点数规范, float,double

  • 快速float->int转换(如果您知道范围,甚至更快)

这些并不是很困难,但作为与位相关部分的最后一个问题,我被要求列举我知道的位操作并比较它们的性能。

我回答了一些不是真正描述性的问题,例如“它是体系结构,编译器,......具体,这实际上并不重要,按位已经非常低级”,但我想这个答案很糟糕。

0 投票
6 回答
9987 浏览

c - 读/写内存中的位

假设我有一个void*内存地址,我需要打印位于该内存地址中的位。我怎样才能做到这一点?

在我的处理器中,内存地址和内存值一样是 32 位,int 也是 32 位。所以我想到了这样做:

然后通过简单的算术(一些moddiv操作)来获取保存在memory_address.

例如value mod 2将给出这个值的最后一位等等。但据我所知(我期待不同的位)它不起作用。任何想法为什么?

此外,是否有人知道“这样做”的现成 C 源代码,从内存中读取/写入位?

0 投票
1 回答
576 浏览

python - 将二进制字符串写入文件

我正在编写一个霍夫曼编码程序来压缩文本文件。我将文本文件转换为其霍夫曼编码值,我需要将其写入文件。我目前正在使用python“BitVector”模块,但是在读取和写入文件时速度太慢了。有没有其他方法可以做到这一点(最好更快)?

谢谢。

0 投票
6 回答
9903 浏览

encryption - 如何以比特为单位定义加密算法的强度?

我正在设计一种加密算法。该算法是对称的(单密钥)。

你如何衡量算法的强度?密钥长度是算法的强度吗?

编辑:

第 1 课:不要设计加密算法,AES 和其他算法由学术界设计和标准化是有原因的

第 2 课:加密算法的强度不是用比特来衡量的,而是用密钥大小来衡量的。算法的强度由其设计决定。一般来说,使用较大密钥大小的算法更难暴力破解,因此更强大。

0 投票
2 回答
201 浏览

bits - 任何不同的 4 个 4 位字符串和所有 2 位字符串之间是否存在双射?

让我举个例子,让我们考虑一下字符串:1000 0101 0111 0000

以及全范围的 2 位字符串:00 01 10 11

我想知道是否有一个函数具有逆并将 4 个 4 位字符串映射到 2 位字符串。

0 投票
3 回答
3547 浏览

c - 连接两个位模式

我需要合并两个变量。它们都是无符号整数。

  • 第一:11000000
  • 二:11111010000

期望输出:11011111010000

用文字表示:我需要将所有 1 后跟一个 0(在第一个数字中)放在整个第二个数字的前面。我想到的唯一想法是,将第一个数字向左移位与第二个数字的长度一样多。而不是总结它。但我不知道长度。虽然它可能可以找到,但没有更好的更简单的方法吗?

谢谢

0 投票
2 回答
2225 浏览

algorithm - 二进制相反数

我想得到相反数量的二进制数(表示 x--> -(x) 和 -(x) --> x)。

算法会是什么?我想改变所有位(“1”到“0”和“0”到“1”)并添加“1”。可以吗?

谢谢

0 投票
5 回答
191 浏览

c++ - 跟踪布尔数据

我需要跟踪 n 个样本。我正在跟踪的信息是布尔类型的,即某事是真还是假。一旦我在样本 n+1 上,我基本上想忽略最旧的样本并记录有关最新样本的信息。

所以说我跟踪样本,我可能有类似的东西

最旧的 0 0 1 1 0 最新的

如果下一个样本是 1,这将变为

最旧的 0 1 1 0 1 最新的

如果下一个是0,这将成为......

最旧的 1 1 0 1 0 最新的

那么在简单性和内存方面实现这一点的最佳方法是什么?

我的一些想法:

布尔向量(这将需要移动元素,因此看起来很昂贵)将其存储为位......并使用位移位(内存--便宜?但样本数量有限制吗?)链接列表?(可能是任务的过度杀伤力)

感谢您的想法和建议:)

0 投票
1 回答
1651 浏览

matlab - MATLAB:提取最高有效位

我正在学习 MATLAB,并且面临从给定双精度中提取最高有效位的问题。我看到了 getmsb 函数。但是,有没有一个函数可以给我说 5 个最高有效位?

阿尼尔。

0 投票
2 回答
3410 浏览

hardware - 一个逻辑地址有多少位?

好的,所以我在 Stack 上进行了一些搜索,但找不到这个问题的答案。这是课堂上提到的东西,但教授没有具体说明如何解决这个问题。

如果我们假设一个系统是 64 位的,并且有 128GB 的​​物理内存,但我们希望进程以 256GB 的方式运行,我如何计算逻辑地址所需的位?

到目前为止,我所做的所有研究都涉及 2-4GB 的物理内存,我终生无法弄清楚如何计算它。我需要知道这一点才能理解页面的位移和条目......