当前位置: 首页 > 知识库问答 >
问题:

使用位操作填充int集

公孙栋
2023-03-14

假设我们在C++中有一个void Fill(char*in,int*out)形式的函数,它应该从char*in中读取5个字符的二进制序列,将它们转换为int=i,并将int*out的第i个位置从0切换为1

示例:char*in为:

'00101 10010',因此值为5和18。

int*out主要为空,有32个空位,因此它是:0000000000000000000000000000000000

由于我们读取的数字是5和18,所以我们必须在int*out中将(从0开始计数)第5个0转换为1和第18个0转换为1

最终的int*out看起来如下:0000 0000 0000 0100 0000 0000 0000 0010 0000。换句话说,我们的int*out是一个特定类型的集合,如果char*In中有一个数字,则“点亮”1s

我想对此进行编码,我已经发现最好的方法是使用位操作。我知道我必须使用递归遍历char*in本身,但我在找到一种方法将这些char*in值(点亮1s)插入到我们的int*out中时遇到了麻烦。

我用于递归迭代char*in的代码如下:

if(*(in) != '\0' ){

        if(*(in) != ' '){
            cout << *in;
            Emplace(in + 1, out);
        }
        else{
            Emplace(in + 1, out);
        }
    }

因为我们只需要二进制字符,所以它会贯穿整个过程直到结束,并通过每一个空格。

我的问题是-我现在如何做1照明?我如何从这个字符中读取一个值,并在正确的位置“打开”int*out中的1

谢谢你,很抱歉这么长的帖子。

共有1个答案

林英朗
2023-03-14

我想出了一个主意!

void Fill(char *in, int *out, int i){

    if(*(in+i) != '\0'){

        if(*(in + i) != ' '){

            int temp_int = 1;

            if(*(in + i) == '1')
                temp_int <<= 16;
            i++;

            if(*(in + i) == '1')
                temp_int <<= 8;
            i++;

            if(*(in + i) == '1')
                temp_int <<= 4;
            i++;

            if(*(in + i) == '1')
                temp_int <<= 2;
            i++;

            if(*(in + i) == '1')
                temp_int <<= 1;

            Union(temp_int, *out, out);
        }
        i++;
        Fill(in, out, i);
    }
}

基本上,我们创建一个临时整数,根据char值将它的“1”左移,然后与原始的*out合并。

 类似资料:
  • 问题内容: 是否可以用int []填充JComboBox?我正在编写一个代码,该代码将使用填充了年份(整数)的JComboBox。 我写的代码是这样的: 我希望将它们转换为ComboBox中的整数,以便可以从中减去。我是否必须用字符串填充ComboBox,然后在输入它们之后使它们成为整数?还是有一种方法可以用int []实际填充ComboBox? 问题答案: 是泛型的,但是Java泛型不支持原始类

  • createBitmap(int-width、int-height、Bitmap.Config-Config)如何填充位图?我想创建一个具有给定宽度和高度的位图,我不想生成随意的颜色数组。我发现这个方法http://developer.android.com/reference/android/graphics/Bitmap.html#createBitmap(int,int,android.gr

  • 在Thymeleaf中,我可以使用 但是我不知道如何输出到表单动作属性中。 有人对Thymeleaf超文本标记语言有什么想法吗? 样例JavaSpring-MVC控制器代码

  • /views/fornecedor/ordersearch.xhtml@34,84 value=“#{order.id}”:类“java.util.HashSet”没有属性“id”。 和:

  • 我正在使用核心数据,并试图用NSMutableSet来填充UITableView。我有两个实体,团队和球员。在我的addTeamsController上,我正在为球队保存一名球员,如下所示 在另一个viewController上,我试图用团队成员填充一个tableview。为了做到这一点,我做了如下工作 然后在我的行和索引路径单元格中,我执行以下操作 我得到了错误 我想知道填充按玩家名字排序的ta

  • 格式 jsTree需要特定的格式才能使用JSON。在标准语法中,不需要任何字段-仅传递您需要的内容。请记住,您将能够访问您指定的任何其他属性-jsTree不会触及它们,以后您将能够使用它们(original在每个节点上使用该属性)。 要更改节点的图标,请使用icon属性。指定包含的字符串/将显示该图像作为节点图标。使用任何其他字符串将把该类<i>应用于用于表示图标的元素。您可以使用布尔值false