Qt位操作:如何对一个字节的某位取反而不影响其他位
在Qt中,可以使用位运算符进行位操作。要对一个字节的某位取反,可以使用异或运算符(^)和位操作符(<<)。\n\n下面是一个示例代码,演示如何对一个字节的某位取反,而不影响其他位:\n\ncpp\n#include <iostream>\n\nint main() {\n unsigned char byte = 0b01010101; // 假设要对第3位(从右往左,从0开始计数)取反\n\n std::cout << "原始字节:" << std::bitset<8>(byte) << std::endl;\n\n unsigned char mask = 0b00000100; // 创建一个只有第3位为1的掩码\n\n byte = byte ^ mask; // 对字节和掩码进行异或运算,取反第3位\n\n std::cout << "取反后的字节:" << std::bitset<8>(byte) << std::endl;\n\n return 0;\n}\n\n\n运行结果:\n\n\n原始字节:01010101\n取反后的字节:01010001\n\n\n这段代码首先定义了一个无符号字符变量byte,并给它赋值为二进制数01010101,即十进制数85。然后,定义了一个掩码mask,它的二进制表示为00000100,即只有第3位为1。接下来,将byte和mask进行异或运算,得到的结果就是对byte的第3位取反的结果。最后,使用std::bitset<8>(byte)将取反后的字节以二进制形式打印出来。\n\n注意,上述代码中使用了C++的std::bitset类来以二进制形式打印字节,需要包含头文件<bitset>。
原文地址: https://www.cveoy.top/t/topic/pun1 著作权归作者所有。请勿转载和采集!