Switch-biu 2022-12-04 21:18 采纳率: 81.8%
浏览 42
已结题

逻辑运算问题(求补码)

问题遇到的现象和发生背景

补码的逻辑运算问题

用代码块功能插入代码,请勿粘贴截图
#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;
}

运行结果及报错内容

第一个是对的,第二个是错的

我的解答思路和尝试过的方法
我想要达到的结果

如何让第二段代码结果跟第一段一样,在改变数组格式的情况下输出补码正确

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-12-04 21:29
    关注
    #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[1] ^ (bytes[0] << 4) ^ (bytes[3] << 8) ^ (bytes[2] << 12)^ (bytes[5] << 16)^ (bytes[4] << 20)^ (bytes[7] << 24)^ (bytes[6] << 28); 
     int signedInteger = unsignedInteger; 
     printf("The unsigned integer is %u\n", unsignedInteger);
     printf("The signed integer is %d\n", signedInteger);
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月12日
  • 已采纳回答 12月4日
  • 创建了问题 12月4日