如何在C ++中将负数转换为基数P.

时间:2015-06-07 12:45:44

标签: c++ binary

我有整数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时实现它。

2 个答案:

答案 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;
}