Я создаю программу, которая добавляет и вычитает 2 числа. Затем я должен вывести этот ответ на разные базы.Decimal to Binary in C
Мой ответ в десятичном формате, типа длинного двойного, таких как:
long double answer;
answer = numberOne + numberTwo;
Я хочу, чтобы преобразовать этот ответ в бинарный код. Теперь у меня есть код, используемый ранее в моей программе, которая делает это, но с указателем полукокса:
char * decimalBinary (char * decimalNumber)
{
bool zeroFront = true;
int i;
int z;
int j = 0;
int n = atoi(decimalNumber);
char * binaryNum = malloc(32+1);
binaryNum[32] = '\0';
int current_index=1;
int end_index = strlen(decimalNumber)-1;
//Error check for valid decimal input, needed error check for beginning of code
while(current_index <= end_index)
{
if(decimalNumber[current_index] != '0' &&decimalNumber[current_index] != '1' &&decimalNumber[current_index] != '2' &&decimalNumber[current_index] != '3' &&decimalNumber[current_index] != '4' &&decimalNumber[current_index] != '5' &&dec[current_index] != '6' &&dec[current_index] != '7' &&decimalNumber[current_index] != '8' &&decimalNumber[current_index] != '9')
{
binaryNum[0] = -8;
return binaryNum;
}
current_index++;
}
for (i = 31; i >= 0; i--) {
z = n >> i;
if (z & 1)
{
binaryNum[j] = '1';
j++;
zeroFront = false;
}
else if (!zeroFront)
{
binaryNum[j] = '0';
j++;
}
}
binaryNum[j] = '\0';
return binaryNum;
}
Моим предпочтительным решением является использование кода у меня уже есть в моей программе, чтобы преобразовать мой ответ в двоичный формат, но так как вы видите, что параметры конфликтуют, и я не уверен, как это сделать.
Еще одно возможное решение, которое отвлекает от использования кода повторного использования в моей программе, заключается в создании другой функции, которая преобразует десятичную дробь в двоичный код, но принимает параметр типа long double, который немного неясен для меня как Что ж.
Редактировать: Вместо long double
, мой ответ относится к модели int
.
Преобразование двоичного 'long double' в двоичном формате сильно отличается от преобразования' int' в двоичный код (это то, что делает ваш код). Вы уверены, что это то, что вы хотите? Какой результат вы ожидаете, преобразовывая 1,5 в двоичный формат? –
Да, я считаю, что я должен изменить long double на int – Bret
. Ваш 'answer' находится в любом формате, который система использует для представления своего типа. Является ли этот тип 'int' или' long double', его формат вряд ли будет хорошо охарактеризован как «десятичный». –