【发布时间】:2016-02-20 05:21:42
【问题描述】:
我已经编写了一个程序来在 c++ 中表示从十进制到二进制的任何数字,但是当我尝试使用负数时,它给出的结果如下:-1-1-1-11-1-0,我不知道不知道为什么。我用一个短整数来表示从 -32000 到 32000 的数字,我也用 unsigned 来获得更大的数字。我还使用了一个数组来存储数字,而不是反转它们以获得正确的表示。我不认为这是反转数组的正确方法,但它对我有用。 MAX(16 ) 用于将其余部分存储在 16 位数组中。 代码如下:
#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;
}
【问题讨论】: