Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2010, 16:15   #1
Kastet14
Пользователь
 
Регистрация: 14.01.2010
Сообщений: 19
По умолчанию перевод числа из десятичного представления в двоичное на Си

Добрый день!
Мне нужен перевод целого числа из десятичного представления в двоичное. Как вывести на экран результат (и то задам наперед) я знаю

Код:
	for(;b>0;b/=2) {
		y=b%2;
		printf("%d", y);
	}
подскажите, плиз, как вывести результат в цело-численную переменную.
Спасибо!
Kastet14 вне форума Ответить с цитированием
Старый 14.01.2010, 16:32   #2
Veselyn
Форумчанин
 
Аватар для Veselyn
 
Регистрация: 29.01.2009
Сообщений: 175
По умолчанию

1. как-то так
Код:
while (chislo != 0)
{
ost=chislo%2;
chislo=chislo/2;
r*=10+ost;
i++;  }
2. Аналогично
http://programmersforum.ru/showthread.php?t=80769
Все люди делятся на 10 типов: те, кто понимают двоичную систему счисления и те, кто нет.

Последний раз редактировалось Veselyn; 14.01.2010 в 16:37. Причина: добавил линк
Veselyn вне форума Ответить с цитированием
Старый 14.01.2010, 17:08   #3
Kastet14
Пользователь
 
Регистрация: 14.01.2010
Сообщений: 19
По умолчанию

вы имели в виду это?

Код:
#include <stdio.h>

int main() {
	int a, n, b, c;
	scanf("%d", &a);
	n=a;
	while (n!=0) {
		c=n%2;
		n=n/2;
		b=b*10+c;
	}
	printf("\nbin = %d\n", b);
}
но это не работает..
и для чего в вашем коде счетчик "i"?
Kastet14 вне форума Ответить с цитированием
Старый 14.01.2010, 18:04   #4
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

вот пример перевода целого положительного числа из десятичной сис. счисл. в двоичную.
Код:
#include <stdio.h>
#include <string.h>
#include <malloc.h>

char * decToBin(int x)
{
	char *t = (char *)malloc(100);
	int i = 0;
	do
	{
		t[i++] = x % 2 + '0';
		x = x / 2;
	} while (x != 0);
	t[i] = '\0';
	// инвертируем t
	int k = strlen(t) - 2;
	int m = k / 2;
	for (int i = 0; i <= m; i++)
	{
		char tmp = t[i];
		t[i] = t[k - i + 1];
		t[k - i + 1] = tmp;
	}
	return t;
}

int main()
{
	int x;
	scanf("%d", &x);
	char *t = decToBin(x);
	puts(t);
}

Последний раз редактировалось Alex_FF; 14.01.2010 в 18:10.
Alex_FF вне форума Ответить с цитированием
Старый 14.01.2010, 18:53   #5
Kastet14
Пользователь
 
Регистрация: 14.01.2010
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Alex_FF Посмотреть сообщение
вот пример перевода целого положительного числа из десятичной сис. счисл. в двоичную.
Код:
#include <stdio.h>
#include <string.h>
#include <malloc.h>

char * decToBin(int x)
{
	char *t = (char *)malloc(100);
	int i = 0;
	do
	{
		t[i++] = x % 2 + '0';
		x = x / 2;
	} while (x != 0);
	t[i] = '\0';
	// инвертируем t
	int k = strlen(t) - 2;
	int m = k / 2;
	for (int i = 0; i <= m; i++)
	{
		char tmp = t[i];
		t[i] = t[k - i + 1];
		t[k - i + 1] = tmp;
	}
	return t;
}

int main()
{
	int x;
	scanf("%d", &x);
	char *t = decToBin(x);
	puts(t);
}
Alex, спасибо за этот пример, но мне необходимо решить эту задачу используя только переменные типа integer.
Kastet14 вне форума Ответить с цитированием
Старый 14.01.2010, 19:01   #6
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

переменной типа int, вы ноль слева не запишите.
тогда нужно массив типа int делать...
Alex_FF вне форума Ответить с цитированием
Старый 14.01.2010, 19:09   #7
Kastet14
Пользователь
 
Регистрация: 14.01.2010
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Alex_FF Посмотреть сообщение
переменной типа int, вы ноль слева не запишите.
тогда нужно массив типа int делать...
ок, с массивом я знаю решение. спасибо!!!
Kastet14 вне форума Ответить с цитированием
Старый 14.01.2010, 19:54   #8
Veselyn
Форумчанин
 
Аватар для Veselyn
 
Регистрация: 29.01.2009
Сообщений: 175
По умолчанию

счетчик нужен для того чтобы
Цитата:
Сообщение от Kastet14 Посмотреть сообщение
вывести на экран результат (и то задам наперед)
типа так

Код:
for(i; i!=0; i--)
{
...
}
Все люди делятся на 10 типов: те, кто понимают двоичную систему счисления и те, кто нет.
Veselyn вне форума Ответить с цитированием
Старый 14.01.2010, 22:44   #9
Kastet14
Пользователь
 
Регистрация: 14.01.2010
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Veselyn Посмотреть сообщение
счетчик нужен для того чтобы

типа так

Код:
for(i; i!=0; i--)
{
...
}
Veselyn, не совсем понятно что вы предлагаете. Можете привести полный код? Заранее благодарю.
Kastet14 вне форума Ответить с цитированием
Старый 15.01.2010, 04:16   #10
Veselyn
Форумчанин
 
Аватар для Veselyn
 
Регистрация: 29.01.2009
Сообщений: 175
По умолчанию

Попробуйте так
Код:
#include <stdio.h>

int main() {
	int a, n, b=1, i=0, c;
	scanf("%d", &a);
	n=a;
	while (n!=0) {
		c=n%2;
		n=n/2;
if(c==1)     b=b*10+1;                       
else		b=b*10+0;
i++;
	}
	printf("\nbin = %d\n", b);
}
Попытаюсь объяснить на примере зачем нужен счетчик
Код:
// переворачиваем Б 
b/=10;             // отбрасываем последний разряд (он всегда равен 1)  и заносим его в Д      
           //еще можно предыдущий цикл         сдеать while (n!=1)  и тогда этот шаг можно будет пропустить
int d=1;      //перевернутая Б 
for(i--; i!=0; --i)      //идем по каждому разряду Б (пока они не закончатся)
  {
     d=d*10+b%10   //переписываем в конец Д последнюю цифру Б
     b/=10;           //удаляем последнюю цифру из Б
  }
PS. Поставьте задержку
Код:
#include <conio.h>

int main()
{
 //...
getch();
 return 0;
}
и включите библиотеку #include math.h
Все люди делятся на 10 типов: те, кто понимают двоичную систему счисления и те, кто нет.

Последний раз редактировалось Veselyn; 15.01.2010 в 13:39.
Veselyn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печать двоичного представления числа в формате слова. Lina__N Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 06.06.2009 12:06
Преобразование десятичного числа в двоичное. Quize Паскаль, Turbo Pascal, PascalABC.NET 4 12.04.2008 16:09
C++. Перевод десятичного числа в двоичное Panterka Помощь студентам 15 12.12.2007 15:04
информатика-дополнительный код десятичного числа Artem1987 Помощь студентам 3 18.11.2007 14:32