Десятичное в двоичное преобразование - PullRequest
0 голосов
/ 21 июня 2011

Мне нужно преобразовать десятичную цифру в 20 цифр в двоичную форму, используя программирование на Си. Какой буфер я создам, потому что он будет очень большим, даже калькулятор не сможет вычислить преобразование 20 цифр в двоичный.

Вот пример того, что я намерен выполнить:

Давайте предположим, что этот код: Я набираю это значение через клавиатуру в буфер. Тем временем я использую AT85C55WD Mcu.

токен char idata без знака [20] = (2,3,5,6,3,3,4,4,3,2,4,4,6,7,4,3,4,5,3, 3);

Я хочу результат

переменная определения типа convrt_token = 23562244324467434533;

Возможно ли это с помощью C? Если да, то, пожалуйста, как мне это сделать?

Ответы [ 3 ]

2 голосов
/ 21 июня 2011

каждая цифра в десятичном формате имеет 10 значений, 0,9.поэтому вам нужно от 3 до 4 цифр в двоичном виде.скажем так, для простоты скажем 4.

так что для десятичного числа из 20 цифр вам понадобится двоичное число из 80 цифр.Что ж.я предполагаю, что это ради интереса.

char decnum [20];char binnum [80];

удачи.

1 голос
/ 03 февраля 2012

Вот отличное решение ....:)

 #include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<unistd.h>
#include<assert.h>
#include<stdbool.h>
#define max 10000
#define RLC(num,pos) ((num << pos)|(num >> (32 - pos)))
#define RRC(num,pos) ((num >> pos)|(num << (32 - pos)))

void tobinstr(int value, int bitsCount, char* output)
{
    int i;
    output[bitsCount] = '\0';
    for (i = bitsCount - 1; i >= 0; --i, value >>= 1)
      {
             output[i] = (value & 1) + '0';
      }
}


  int main()
   {
    char s[50];
    tobinstr(65536,32, s);
    printf("%s\n", s);
    return 0;
   }
1 голос
/ 21 июня 2011

Начните, как упоминает Гидон.Тогда вам нужно только определить функцию 'decToBin' или что-то в этом роде, которую вы можете использовать следующим образом:

char decnum[20];  
char binnum[80];  

// ... get the values, do zero initialization etc...  
decToBin( decnum, binnum );  

И вы готовы к работе.
Функцию decToBin можно легко реализоватькак общий алгоритм длинного деления.Это не должно быть слишком сложно.
Веселись;)

РЕДАКТИРОВАТЬ: Подробное описание:

  1. Посмотрите на свою последнюю цифру.Это делится на 2?
    -> да: ваша двоичная цифра будет 0
    -> нет: ваша двоичная цифра будет 1

  2. Разделите все десятичное числочисло на 2 (предпочтительно длинное деление) и усечение при необходимости.

  3. начать заново.Вы получите двоичные цифры в обратном порядке.(Повторяйте, пока ваше десятичное число не станет 0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...