#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#include <assert.h>
#include <ctype.h>
#include <wchar.h>
char *dectobin(char*, char*);
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char *dec, *bin;
dec = (char*)malloc(100 * sizeof(char));///выделяем память в куче
bin = (char*)malloc(100 * sizeof(char));
printf("Введите десятичную запись числа: ");
gets_s(dec,100);
printf("Результат в двоичной: ");
puts(dectobin(dec, bin));
system("pause");
return 0;
}
void reverse(char* begin, char* end)
{
char temp;
while (begin < end)
{
temp = *begin;
*begin = *end;
*end = temp;
begin++;
end--;
}
}
char *dectobin(char* dec, char* bin){
int c = 1;
char* bin_begin = bin;
int i = atoi(dec);
while (i != 0){
*bin++ = c*(i % 2) + '0';
i = i / 2;
}
*bin = '\0';
reverse(bin_begin, bin-1);
return (bin = bin_begin);
}
char* dectobin(char* dec, char* bin)
{
int i, j;
unsigned int iDec;
for(iDec=0; *dec; dec++)
iDec = iDec*10+(*dec)-'0';
for(i=0; i<31; i++,iDec<<=1)
if(iDec & 0x80000000)
break;
for(j=0; i<32; i++,j++,iDec<<=1)
bin[j] = (iDec & 0x80000000)?'1':'0';
bin[j] = 0;
return bin;
}
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.