Я сделал программу для представления любого числа от десятичной до двоичной в C++, но когда я пытаюсь использовать отрицательные числа, он дает мне такие результаты: -1-1-1-11-1- 0, я не знаю почему. Я использовал короткий int для представления чисел от -32000 до 32000, также я использовал unsigned для получения больших чисел. Кроме того, я использовал массив для хранения чисел, а затем обратный их, чтобы иметь правильное представление. Я не думаю, что это правильный способ изменить массив, но он работает для меня. MAX (16) предназначен для хранения остальных в массиве, который составляет 16 бит. Вот код:C++ двоичные отрицательные числа
#include <iostream>
using namespace std;
const int MAX=16;
int main(){
int tab1[MAX];
short int n;
cout<<"Input a number: ";
cin>>n;
for (int i=0; i<sizeof(n)*8; i++){
tab1[i] = n%2;
n = n>>1;
}
cout<<"Binary representation: ";
for (int j=MAX-1;j>=0;j--){
cout<<tab1[j];
}
cout<<endl;
return 0;
}