相关疑难解决方法(0)

为什么计算位数有用?

我已经看到了关于计算insert type of输入中设置位数的众多问题,但为什么它有用呢?

对于那些寻找有关位计数的算法的人,请看这里:

  1. 计算无符号长整数序列中的公共位
  2. 计算unsigned int中位转换次数的最快方法
  3. 如何计算32位整数中的设置位数?

language-agnostic computer-science bits bit-manipulation bitcount

6
推荐指数
1
解决办法
501
查看次数

您如何计算浮点数中设置的位数?

如何使用C函数计算浮点数中设置的位数?

c floating-point

5
推荐指数
2
解决办法
3618
查看次数

使用C将二进制数设置为位数

我有一个长度为8的二进制数,例如00110101设置了8位.我需要一个快速位计数来确定设置位数.像x = x&(x-1)那样运行算法会将它限制为包含数字中的设置位数但是我不太确定如何使用它.一点帮助就会明显!

c bit

5
推荐指数
1
解决办法
2234
查看次数

这个bitset :: count()的实现如何工作?

以下是std::bitset::countMSVC 2010 的实现:

size_t count() const
    {   // count number of set bits
    static char _Bitsperhex[] = "\0\1\1\2\1\2\2\3\1\2\2\3\2\3\3\4";
    size_t _Val = 0;
    for (int _Wpos = _Words; 0 <= _Wpos; --_Wpos)
        for (_Ty _Wordval = _Array[_Wpos]; _Wordval != 0; _Wordval >>= 4)
            _Val += _Bitsperhex[_Wordval & 0xF];
    return (_Val);
    }
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释这是如何工作的吗?诀窍是_Bitsperhex什么?

c c++ stl

5
推荐指数
1
解决办法
1145
查看次数

在C中连续计数1

可能重复:
查找连续的位串1或0

是否有可能从左数开始计算整数中的连续1?所以:从最高位开始的连续设置位的总数.

仅使用:

! ~ & ^ | + << >>
Run Code Online (Sandbox Code Playgroud)

-1= 0xFFFFFFFF将返回32

0xFFF0F0F0 将返回12(FFF = 111111111111)

不幸的是没有循环.

可以承担机器:

  1. 使用2s补码,32位整数表示.

  2. 算术地进行右移.

  3. 将整数移位超过字大小时,会出现不可预测的行为.

我被禁止:

  1. 使用任何控制结构,如if,do,while,for,switch等.

  2. 定义或使用任何宏.

  3. 在此文件中定义任何其他功能.

  4. 调用任何功能.

  5. 使用任何其他操作,例如&&,||, - 或?:

  6. 使用任何形式的铸造.

  7. 使用除int之外的任何数据类型.这意味着您不能使用数组,结构或联合.

我看过 Finding连续的1位或0位字符串 它是使用循环,我无法使用.我甚至不知道从哪里开始.

(是的,这是一项任务,但我只是要求那些熟练的人帮忙.我已经完成了所有我需要做的事情,但是这个不会起作用.)

(对于那些仅仅因为它是为了学校而贬低的人:常见问题:1一个特定的编程问题,检查2但是,如果你的动机是"我希望别人向我解释______",那么你可能没问题.)

c bitwise-operators

5
推荐指数
1
解决办法
5104
查看次数

如何最快地计算php中的设置位数?

我只是想在php中找到一些最快的设置位计数功能.

例如,0010101 => 3,00011110 => 4

我看到有很好的算法可以在c ++中实现. 如何计算32位整数中的设置位数?

是否有任何php内置函数或最快的用户自定义函数?

php algorithm set bit

5
推荐指数
1
解决办法
6264
查看次数

如何在C++中逐位循环

如果我有long long x;c ++

如何循环数字中的每个位以检查它是零还是1?

我想计算位数的数量.

c++ bit long-long

5
推荐指数
1
解决办法
8066
查看次数

可以确定8位整数中的按位转换次数吗?

我似乎无法在此找到任何有点魔力,所以我希望这里的某人可能能够揭示这是否可能.

我试图在8位整数中找到按位转换的数量(整数实际上是32位整数,但我只使用前8位)来确定8位是否均匀(2个或更少的转换) ).

例如:

00100000 - two transitions - uniform
00100001 - three transitions - not uniform
10101010 - seven transitions - not uniform
00000000 - no transitions - uniform
Run Code Online (Sandbox Code Playgroud)

是否有更快的方法来找到除了循环每个位之外的转换次数(循环通过每个位是目前唯一可以提出的解决方案)?

integer glsl bit

5
推荐指数
1
解决办法
284
查看次数

找到最小位数以区分一组二进制数的算法

假设我们有K个二进制数(每个都是相同的长度).我们需要找到所需的最少位数(不需要是连续的)来唯一地识别这些K二进制数.例如100,110可以区分1位(在第二位置).111,110,101需要2比特来区分.

algorithm bits

5
推荐指数
1
解决办法
550
查看次数

按时间复杂度 O(1) C++ 代码计算 Byte 中 1 的位数

我搜索了一种算法,该算法通过 O(1) 的时间复杂度以及我在谷歌中找到的内容来计算 Byte 中的个数:

// C++ implementation of the approach  
#include <bits/stdc++.h> 
using namespace std; 
  
int BitsSetTable256[256]; 
  
// Function to initialise the lookup table  
void initialize()  
{  
  
    // To initially generate the  
    // table algorithmically  
    BitsSetTable256[0] = 0;  
    for (int i = 0; i < 256; i++) 
    {  
        BitsSetTable256[i] = (i & 1) +  
        BitsSetTable256[i / 2];  
    }  
}  
  
// Function to return the count  
// of set bits in n  
int countSetBits(int n)  
{  
    return (BitsSetTable256[n & 0xff] …
Run Code Online (Sandbox Code Playgroud)

c++ bit-manipulation bit-shift

5
推荐指数
2
解决办法
321
查看次数