我有整数num
,可以是负数或正数,也有数字P(1< P< = 9)。
我想要做的是将num转换为base-P。
我在num > 0
:
int i = 0;
int A[10000];
while (num != 0)
{
A[i] = num % p;
num /= p;
i++;
}
但我不知道如何在num < 0
时实现它。
答案 0 :(得分:3)
检查数字是正数还是负数,并在代码中记住这一点。如果它是负数 - 将数字乘以-1
并执行与正数相同的数字。输出数字时,您应该在此之前执行此操作:
if (sign == -1)
cout << '-';
然后写下剩下的数字。
答案 1 :(得分:1)
-
符号不是基于10
的特殊符号。一般来说,90base{10} = 1011010base{2}
然后是-90base{10} = -1011010base{2}
。你在这里做的是两个补充的扩展。两个补码是一种在不使用-
的情况下以二进制表示正数和负数的方法,并用于计算。只需检查数字是正数还是负数,并设置负号。你可以用来检查阿德里安的答案。但是,您也可以使用函数代码返回-1
表示负值,0
表示零,1
表示正值x
int status (int x) {
int sign = (x > 0) - (x < 0);
return sign;
}