bit manipulation
bit manipulation
本文关键字:manipulation bit 更新时间:2023-10-16
我正在玩一些东西,试图对它有一个合理的理解,我遇到了这个问题。我将字符中的第六位设置为 1,我试图找出它是否实际上设置为 1。它给了我一个错误的答案。
int main(int argc, char** argv) {
unsigned char a=0;
a=a | (1<<6);
int b=a &(1<<6);
cout<< b;
return 0;
}
它给我的结果是 64 而不是 1。为什么?
这确实是正确的和预期的行为。
检查是否设置了位n
的方法如下:
return (value & (1U << n)) == (1U << n);
&
按位执行 AND,因此11111111 & 01000000
01000000
。
您可以使用:
int b = (a >> 6) & 1;
如果设置了第六位,则将b
== 1
,如果未设置,则将0
。
程序的预期输出为 64,因为64&64
为 64。 由于非零值在if
表达式和条件运算符(&&
,||
(中被解释为true,这对于很多情况来说已经足够了:
a |= (1<<6);
if (a & (1<<6))
{
/* this code would get executed */
}
如果您对变量中有 64 感到困扰,请尝试如下操作:
bool b = (a & (1<<6)) ? true : false;
我不确定这里是否需要三元运算符,但很清楚发生了什么。
或者你可以这样做:
bool b = a >> 6 & 1;
相关文章:
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- WinAPI IcmpSendEcho on 64-bit platform
- 将硬盘驱动器上的 BIT XXX 从 0 更改为 1
- 如何使用'bit-blast'方法以命题逻辑形式打印给定的公式?
- 仅在测试中"dlopen failed: is 32-bit instead of 64-bit"
- 将枚举类型保存在位字段 [dcl.enum] [class.bit] 中
- Array Manipulation of HackerRank 背后的逻辑
- AES CBC 128 bit encryption -OpenSSL
- 在字节中访问struct或BIT的子集更快
- 将"8 bit"(字节)字符串写入二进制文件?
- 使用config.json文件与BBC Micro:BIT MED在线编译器
- CMake 64-bit with SFML 64-bit
- P1236R1:为什么 c++ 标准在定义整数时试图摆脱单词"bit"?
- boost 1.69 visual studio 2017 64-bit
- 32 bit PPC rlwinm instruction
- 解释"Bit String"的最佳方式是什么
- 它是如何工作的"checking bit flag"
- std :: getline部分读取第一行,并设置eof-bit
- bit c manipulation
- bit manipulation