问题标签 [bitcount]

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

c++ - 以整数计数设置的位数

我正在研究关于位计数的不同方法,或给定整数的人口计数方法,在这段时间里,我试图弄清楚以下算法是如何工作的

我认为在计算 x 的每个值之后,我们会得到

如果我们将它乘以 -1,我们得到-4294967294*x,但是它如何计算位数?请帮助我很好地理解这个方法。谢谢

0 投票
12 回答
24685 浏览

c++ - 计算以字节为单位的位数

我很感兴趣,这是通过这种方式计算以字节为单位的位数的最佳方法

当字节的值在运行时已知时,也许它是最佳的?是否建议在代码中使用它?

0 投票
1 回答
181 浏览

algorithm - 范围内的快速位计数

我需要找到解决这个问题的算法:
在 [x,y] 范围内的数字中找到所有正位的总和。
警告:x 和 y 可能非常大(从 1 到 10^20)。
感谢帮助。

0 投票
3 回答
484 浏览

c# - 在 C# 中对任意大的正整数进行位计数

有很多位计数的实现,但就我而言,我需要测试一个任意大的数字是否最多包含两个设置位。

我编写了以下函数来完成这项工作,而且看起来速度相当快,但我想知道它是否可以针对 C# 进一步优化。这个函数在循环中被调用了几百万次。

重要提示:发送给函数的参数 [number]永远不会是负数。

我想到的几点是:

  • 使函数静态。完毕。
  • 使用静态查找数组。完毕。
  • 使用指针而不是数组索引,因为字节数经常超过 100,000。不确定这会有多大帮助。
  • 强制使用 .NET 中无法保证的内联函数。

接受其他建议。

0 投票
3 回答
1722 浏览

c++ - C++ 对 40 字节数组执行 bit_count 和 AND 操作的快速高效方法

在我的项目中,我需要 AND 两个大小为 40 字节(320 位)的二进制数组,然后计算 C++ 中的设置位计数。我找到了一些算法来做到这一点,但我想知道在 c++ 中实现它的最快方法是什么。我的意思是什么 c++ 数据类型是合适的?(unsinged char*,unsigned int 32,u_int64,...)。我知道许多算法与 32 位整数兼容,尽管我的数组大小是 40 字节。

这个链接中描述的算法怎么样: 快速位计数技术哪个更快?

是 const 类型更好还是没有区别?

任何帮助将非常感激。

0 投票
2 回答
7081 浏览

c++ - 计算位数:这条线是如何工作的?n=n&(n-1);

我需要一些解释这个特定的行是如何工作的。
我知道这个函数计算 1 的位数,但是这条线究竟是如何清除最右边的 1 位的呢?

有人可以简单地向我解释一下或给出一些“证据”吗?

0 投票
1 回答
696 浏览

bit-manipulation - 这种神奇的位计数方法是如何工作的?

在处理 XKCD 愚人节的绞链散列冲突问题时,我遇到了这种奇怪的、快速的、乘法计算单词中设置位的方法:

为什么这样做/发生了什么?我们能否推广这种方法(例如,从问题中处理我们的 128 位值)?

另外,我不禁认为这与这个关于使用聪明的幻数移动位的问题有关。

0 投票
4 回答
2083 浏览

go - 有 big.BitCount 吗?

BitCountbig.Int是否有已经编写好的方法?数学/大似乎没有一个。

显然,如果没有,我会自己写一个 - 有没有人已经写过一个?

我想要数字中设置的位数。就像Java BigInteger.bitCount()一样。

0 投票
2 回答
188 浏览

c - 我如何知道 C 中 cpu/os 的位数

我知道如何使用 shell 获取 CPU 或操作系统的位数。

但是,我们如何才能获得 C 程序中的位数。这是一个面试问题,我的解决方案如下:

但面试官说这是错误的。那么,正确答案是什么?

0 投票
2 回答
4128 浏览

java - 为什么 Integer.bitCount() 对于 255 的输入返回 8?

Integer.bitCount()的 Java API告诉我们:

“公共静态 int bitCount(int i)

返回指定 int 值的二进制补码表示中的一位数。这个函数有时被称为人口计数。

返回: 指定 int 值的二进制补码表示中的一位数。自:1.5"

因此,如果我们将 255 转换为二进制,我们得到 11111111。如果我们将其转换为二进制补码版本,我们得到 00000001,使一位数为 1。但是,如果我运行此代码:


我得到这个输出:
Number = 255
Binary = 11111111
Two's Complement = 00000001
Number of one bits = 8

为什么我得到 8 而不是 1?