问题遇到的现象和发生背景
补码的逻辑运算问题
用代码块功能插入代码,请勿粘贴截图
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
unsigned char bytes[8] = {0xF4, 0xFF,0xFF,0xFF};
unsigned int unsignedInteger = bytes[0] ^ (bytes[1] << 8) ^ (bytes[2] << 16) ^ (bytes[3] << 24);
int signedInteger = unsignedInteger;
printf("%d\n",vu);
printf("The unsigned integer is %u\n", unsignedInteger);
printf("The signed integer is %d\n", signedInteger);
return 0;
}
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
unsigned char bytes[8] = {0xF, 0x4, 0xF, 0xF,0xF,0xF,0xF,0xF};
unsigned int unsignedInteger = bytes[0] ^ (bytes[1] << 4) ^ (bytes[2] << 8) ^ (bytes[3] << 12)^ (bytes[4] << 16)^ (bytes[5] << 20)^ (bytes[6] << 24)^ (bytes[7] << 28);
int signedInteger = unsignedInteger;
printf("The unsigned integer is %u\n", unsignedInteger);
printf("The signed integer is %d\n", signedInteger);
return 0;
}
运行结果及报错内容
第一个是对的,第二个是错的
我的解答思路和尝试过的方法
我想要达到的结果
如何让第二段代码结果跟第一段一样,在改变数组格式的情况下输出补码正确