gpt4 book ai didi

c++ - 为什么 C/C++ 按位异或运算符关心符号?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:17:12 40 4
gpt4 key购买 nike

<分区>

一段时间以来,我一直在努力处理一些低级别的消息传递,结果证明这是校验和计算的问题。我认为按位 XOR 运算符不关心符号,所以我使用 QByteArray 来存储字节,并使用 at 方法返回 char,计算校验和。这些消息有时会得到适当的确认,但并非总是如此。

看起来另一端的人正在使用 uint8_t 来存储字节,并且校验和在某些情况下失败。我通过将 char 转换为 uint8_t 解决了这个问题,但我对此感到非常困惑。

为什么按位异或运算符关心符号?我认为它在位层面上起作用,不管它们代表什么。这是我用来尝试理解它的一段代码。

#include <stdio.h>
#include <stdint.h>
#include <iostream>
#include <bitset>

int main ()
{
uint8_t a = 0b10010101;
char b = 0b10010101;

uint32_t checksum;

checksum = 55;
checksum ^= a;
std::cout << std::bitset<32>(checksum) << std::endl;

checksum = 55;
checksum ^= b;
std::cout << std::bitset<32>(checksum) << std::endl;
}

即使两个整数都包含相同的位,运算也会在每种情况下产生不同的结果。

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