int 位运算
Bitwise operations with int
对不起我的英语。我在其中存储了从 0 到 255 的多个 int 值。为了找出 7 位数字中的内容,我将数字转换为二进制系统,然后在行中检查行:
if (informationOctet_.substr(6, 1) == "0")
{
...
}
出现了两个问题,
If I use int (which we have 4 bytes), and my number is unsigned int the range [0, 255] How do I determine which byte I need to consider? High byte?
I have found the desired byte, how do you know the contents of, for example, the 6th bit?
P.S。
我不使用法术,因为使用 unsigned int。
谢谢大家,我测试了整数:
int k = 3;
for (int i = 0; i < 8; i++)
{
if (k & (1 << i))
{
std::cout << 1;
}
else
{
std::cout << 0;
}
}
打印:11000000
您可以选择 "Char" 数据类型进行检查。它回答了你的两个问题。因为,字符数据类型是 1 字节(8 位)。它也包含整数值,因为 char 和 int 是兼容的数据类型。
这是实现定义的,取决于 CPU 的 endianess。如果你很聪明,你可以这样检查:the_int & 0xFF
,无论字节顺序如何,它总是会给你最低有效字节。
byte & (1 << 6)
。可能是。请注意,位计数是零索引的(就像数组一样),因此您必须小心这些术语。 "Bit 6" 和 "the 6th bit" 可能有不同的含义。总是枚举位为7 6 5 4 3 2 1 0
,那么就会和C代码保持一致
对不起我的英语。我在其中存储了从 0 到 255 的多个 int 值。为了找出 7 位数字中的内容,我将数字转换为二进制系统,然后在行中检查行:
if (informationOctet_.substr(6, 1) == "0")
{
...
}
出现了两个问题,
If I use int (which we have 4 bytes), and my number is unsigned int the range [0, 255] How do I determine which byte I need to consider? High byte?
I have found the desired byte, how do you know the contents of, for example, the 6th bit?
P.S。 我不使用法术,因为使用 unsigned int。
谢谢大家,我测试了整数:
int k = 3;
for (int i = 0; i < 8; i++)
{
if (k & (1 << i))
{
std::cout << 1;
}
else
{
std::cout << 0;
}
}
打印:11000000
您可以选择 "Char" 数据类型进行检查。它回答了你的两个问题。因为,字符数据类型是 1 字节(8 位)。它也包含整数值,因为 char 和 int 是兼容的数据类型。
这是实现定义的,取决于 CPU 的 endianess。如果你很聪明,你可以这样检查:
the_int & 0xFF
,无论字节顺序如何,它总是会给你最低有效字节。byte & (1 << 6)
。可能是。请注意,位计数是零索引的(就像数组一样),因此您必须小心这些术语。 "Bit 6" 和 "the 6th bit" 可能有不同的含义。总是枚举位为7 6 5 4 3 2 1 0
,那么就会和C代码保持一致