gpt4 book ai didi

c++ - 将0和1存入一个32位整数的数组中并进行位运算

转载 作者:行者123 更新时间:2023-11-30 04:11:15 26 4
gpt4 key购买 nike

我有一个大小为 32 的数组。数组中的每个元素都是 0 或 1。我希望能够将它们存储到 32 位整数的位位置,并对其执行按位运算。我该怎么做?

另外,如果我有两个大小为 32 的数组,并且我想同时对具有相同索引的元素进行按位运算,我可以这样做吗?

op_and[31:0] = ip_1[31:0] & ip_2 [31:0];

我正在使用 gcc 编译器。

最佳答案

您可以使用或运算符 |和移位( << 和 >> )。

uint32_t myInt = 0;
for( int index=0; index < 32; index++ )
{
myInt |= ( arrayOf32Ints[i] << i );
}

此示例假定 arrayOf32Ints 的值根据您的问题为 0 或 1。如果它们可能包含“任何 true”或 false 值,则应明确要求(有些人会告诉您使用 !! 但标准不保证 true 为 1)。

那一行就是

myInt |= ( (arrayOf32Ints[i])?1:0) << i );

如果你想打开或关闭个别位,你可以这样做:

myInt |= (1<<3); //Sets bit 3 true by shifting 1 3 bits up (1 becomes 4), and ANDing it with myInt.
myInt |= 4; // Sets bit 3 by ANDing 4 (The binary form of 4 is 100) with myInt.
myInt ^= (1<<5);; // Turns OFF bit 5 by XORing it with myInt (XOR basically means "Any bits which are not the same in both numbers")
myInt ^= 16; //Sets bit 5 by XORing it with myInt (16 is 10000 in binary)

关于c++ - 将0和1存入一个32位整数的数组中并进行位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20291258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com