对于十进制整数N,试求其-2进制表示。 例如,因为 1*1 + 1*-2 + 1*4 + 0*-8 +1*16 + 1*-32 = -13 ,所以(-13)_10 = (110111)_-2。 用c语言实现
时间: 2023-12-18 11:58:43 浏览: 77
C语言题库填空1---100
可以使用以下代码实现:
```c
#include <stdio.h>
void to_neg_base(int n) {
if (n == 0) {
printf("0");
return;
}
char digits[32];
int i = 0;
while (n != 0) {
int remainder = n % -2;
n /= -2;
if (remainder < 0) {
remainder += 2;
n += 1;
}
digits[i++] = remainder + '0';
}
for (int j = i - 1; j >= 0; j--) {
printf("%c", digits[j]);
}
}
int main() {
int n = -13;
printf("%d的-2进制表示为:", n);
to_neg_base(n);
printf("\n");
return 0;
}
```
输出结果为:
```
-13的-2进制表示为:110111
```
阅读全文