我正在尝试让C将无符号整数转换为无符号整数。 如何在不将C解释为二进制补码的情况下反转无符号数字的位?
每当我有一个无符号整数并将其用作按位NOT运算符的操作数时,它将根据2的补数求值为负数。但是根据定义,我使用的是无符号整数,即不应该带有符号的数字。
下面是我的沙盒代码。我目前正在使用GCC版本9.1.1。
#include <stdio.h>
#include <stdint.h>
int main(){
uint8_t x = 1;//0000 0001
printf("NOT(%d) == %d", x, ~x);//1111 1110
}
Run Code Online (Sandbox Code Playgroud)
我想要254(1111 1110)的输出,但是C将值解释为二进制补码,所以我得到-2。有没有办法让我不将C 解释为二进制补码?