以二进制数计算运行/ 1的集合

Mr *_*oso 2 c# bitwise-operators

我想借助于按位运算符来计算二进制序列中的1的运行.

我搜索过类似的主题,但从我正在寻找的内容中找到了不同的答案.汉明重量也不同,因为它计算二进制中的1的数量.

例如,如果我有二进制001101011101,我应该有4次1的运行,因为它们是1的集合/组,它们之间除以0.

我知道如何在C#中使用按位运算符,但我真的无法在一个程序中集体使用它们.

Dav*_*idG 5

如果你有二进制数的字符串表示,那么你只需要将字符串拆分为"0":

var binaryString = "0011011101110001";

var count = binaryString
    .Split(new [] { '0' }, StringSplitOptions.RemoveEmptyEntries)
    .Count();
Run Code Online (Sandbox Code Playgroud)

如果您的号码存储在一个int那么转换为字符串是一件简单的事情:

int value = 12345;
var binaryString = Convert.ToString(value, 2);
Run Code Online (Sandbox Code Playgroud)

  • `split`返回数组,所以我们可以使用`Length`属性来调用函数`Count` (2认同)