【发布时间】:2019-02-25 13:06:19
【问题描述】:
我尝试将十进制转换为二进制,如下所示: 我得到了输入 int 和一个二进制 int。
int rem;
int bin[32] = {0};
for(int i=0; input != 0; i++) { //making array of binary, but reversed
rem = input%2;
bin[i] = abs(rem);
input = input / 2;
}
for(int i = 0; i < 32; i++) { //reversed binary is put in correct order
binary[i] = bin[31 - i];
}
现在我希望如果输入为负数,如“-5”,它会给我两个补码。
当试图用“~”来补充每一位时,它们会以某种方式转向“-1”。
for (int i = 0; i < 32; i++) {
binary[i] = ~binary[i];
}
【问题讨论】:
-
那是因为它们不是比特,它们是
ints。如果int存储0并且您将其所有位反转为二进制补码,您确实会得到-1。 -
binary[i] = 1 - binary[i];可能是你想要的。