我正在学习汇编语言课程,并被要求编写一个应用程序来接受一个有符号整数作为输入并输出相应的 2 的补码。我一直在互联网上试图找到有用的代码,但我唯一能找到的是转换成精确二进制的代码(不是我需要的带有前导零的 16 位格式)。这是我到目前为止的代码:
#include<iostream>
#include<string>
using namespace std;
string binaryArray[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
void toBinary(int);
void convertNegative();
int main()
{
cout << "This app converts an integer from -32768 to 32767 into 16-bit 2's complement binary format" << endl;
cout << "Please input an integer in the proper range: ";
int num;
cin >> num;
if (num < -32768 || num > 32767)
cout << "You have entered an unacceptable number, sorry." << endl;
if (num < 0)
{
toBinary(num);
convertNegative();
}
else
toBinary(num);
cout << endl;
system("pause");
return 0;
}
我的 toBinary 函数是您可以在 Internet 上找到的用于十进制到二进制的函数,但它仅在我输出到控制台时才有效,并且它不适用于负数,所以我不能取 2 的补码。有任何想法吗?