Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/723: Рейтинг темы: голосов - 723, средняя оценка - 4.81
1 / 1 / 0
Регистрация: 25.11.2009
Сообщений: 15

Перевод из десятичной системы в двоичную

24.02.2010, 22:47. Показов 147274. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
помогите пожалуйста написать программу, переводящую целые числа из десятичной системы счисления в двоичную. не могу догадаться как записыватьединицы и нули. знаю, что всё время надо делить на 2.
надо ли делать массив в программе?
заранее благодарю.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.02.2010, 22:47
Ответы с готовыми решениями:

Перевод числа из десятичной системы счисления в двоичную
Здравствуйте! Пытаюсь написать программу для перевода чисел из десятичной системы счисления в двоичную. Вот, что пока написал ...

Перевод из десятичной системы в двоичную и обратно из двоичной в десятичную
uses crt; var m:arrayof integer; n:longint; i,k:integer; begin clrscr; write('-> '); readln(n); k := 0;

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

50
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
27.05.2015, 14:57
Студворк — интернет-сервис помощи студентам
Да, так еще лучше. Идея стремится к воплощению, созданному Напильнегом: Перевод из десятичной системы в двоичную
0
0 / 0 / 0
Регистрация: 13.01.2016
Сообщений: 5
07.10.2016, 09:46
Без массивов и прочей гадости, скорость выполнения огромная
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var n,rez,b: integer;
begin
readln(n);
b:=1;
while n<>0 do
begin
rez:=rez+(n mod 2)*b;
b:=b*10;
n:=n div 2;
end;
writeln(rez);
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
07.10.2016, 11:16
Tonat,
попробуйте ввести 32767, 2147483647.

Добавлено через 3 минуты
Максимальное число на входе с правильным ответом на выходе:
-- при 2-байтном Integer -- 16,
-- при 4-байтном Integer -- 512.

Не маловато?
0
0 / 0 / 0
Регистрация: 13.01.2016
Сообщений: 5
13.10.2016, 17:17
В принципе для школьного курса достаточно, но если вам нужно более никто не мешает сменить тип переменной.
int64 покроет 20 разрядов.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
13.10.2016, 18:17
Tonat,
слишком велика избыточность -- 10 к 2. Проще:
Pascal
1
2
3
4
5
6
var n, m: Longint;
begin
  ReadLn(n); m:=$80000000;
  repeat Write(Ord(n and m<>0)); m:=m shr 1; until m=0;
  WriteLn;
end.
Добавлено через 7 минут
Или без лидирующих нулей:
Pascal
1
2
3
4
5
6
7
var n, m: Longint;
begin
  ReadLn(n); m:=$80000000;
  while (n and m=0) and (m<>0) do m:=m shr 1;
  repeat Write(Ord(n and m<>0)); m:=m shr 1; until m=0;
  WriteLn;
end.
Добавлено через 18 минут
Или на знаковом бите (выше было с лидирующими нулями):
Pascal
1
2
3
4
5
6
7
var n, i: Longint;
begin
  ReadLn(n); i:=(8*SizeOf(n)-1)*Ord(n<>0);
  while n>0 do begin Dec(i); n:=n shl 1; end;
  for i:=i downto 0 do begin Write(Ord(n<0)); n:=n shl 1; end;
  WriteLn;
end.
0
0 / 0 / 0
Регистрация: 13.01.2016
Сообщений: 5
14.10.2016, 12:51
bormant
Ваши примеры выдают у меня стадо единиц. Я не совсем понимаю почему )

Добавлено через 2 часа 47 минут
bormant
Проблему выяснил - онлайн компилятор возмущается.
Однако моя цель написать алгоритм, который не требует знания операций с символьными переменными и строками, также массивами. Так, как данная программа по моей идее должна рассматриваться в 7-8х классах.
Как очередная попытка - безумно длинный код
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var n,i: longint;
begin
readln(n);
i:=1;
while n-i>=0 do  
i:=i*2;
i:=i div 2;
while i<>0 do
begin
if n div i =1 then
begin
write(1);
n:=n-i;
end
else
write(0);
i:=i div 2;
end;
end.
0
0 / 0 / 0
Регистрация: 21.01.2019
Сообщений: 42
17.08.2019, 16:33
Объясните пожалуйста, зачем нужно
Pascal
1
2
3
4
 begin
     s:=chr(ord('0')+x mod 2)+s;
     x:=x div 2;
  end;
?
Почему нельзя просто сделать вот так
Pascal
1
2
3
4
begin
     s:=x mod 2+s;
     x:=x div 2;
  end;
?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
17.08.2019, 16:42
Цитата Сообщение от Sasha5289 Посмотреть сообщение
Почему нельзя просто сделать вот так
Потому что s: String, x mod 2: Integer (или иной целочисленный тип), а для Integer+String операция "+" не определена, только для Число+Число или Строка_или_Символ+Строка_или_Символ.
1
0 / 0 / 0
Регистрация: 21.01.2019
Сообщений: 42
17.08.2019, 16:54
Странно, что у меня заработал тот вариант. Спасибо, разобрался
0
0 / 0 / 0
Регистрация: 13.04.2021
Сообщений: 1
13.04.2021, 19:24
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var a, n:Integer;
var rez, l:string;
begin
  Readln (n) ;
 if n=1 then 
 begin
 rez:='1'
  ;
  n:=n-1;
  end;
  While n>0 do 
  Begin 
  a:=n mod 2;
    n:=n div 2;
if a=1 then
rez:='1'+rez;
if a=0 then
rez:='0'+rez  ;
 end  ; 
 write(rez);
end.
много, зато без массивов и функций
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
13.04.2021, 21:18
Nikitahaker228,
#45 короче и тоже без массивов и функций.

Добавлено через 3 минуты
1) строки 5-10 зачем?
2) строки 15-17 -- зачем 2 раза проверять одно и тоже? n mod 2 может дать только 0 или 1. (Строго говоря, еще и -1, но этот вариант тут и не учитывается ;-))
3) при n=0 получится неудобно ;-)

Добавлено через 6 минут
Предложенный вариант можно смело сократить до
Pascal
1
2
3
4
5
6
var n: Integer; r: String;
begin
  ReadLn(n);
  repeat r:=Chr(Ord('0')+n mod 2)+r; n:=n div 2; until n=0;
  WriteLn(r);
end.
Но проблема с ним ровно та же, что и с исходным: в задании не сказано, что отрицательные числа недопустимы ;-)

Добавлено через 4 минуты
PS. Замена n mod 2 на n Ord(mod 2<>0) равносильна более дешёвому n:=Abs(n).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.04.2021, 21:18

Перевод числа из десятичной системы в двоичную, методом рекурсии
Помогите перевести число из десятичной системы счисления в двоичную, рекурсией. Знаю как сделать циклически, а рекурсией не могу понять.

Перевод натурального числа из десятичной системы счисления в двоичную
люди помагиет сейчас идти здавать а я не успеваю! помагите кто че сможет решить! 3. Составить программу перевода и печати...

Перевод из десятичной в двоичную систему счисления
Прошу прощения за данную тему. Конечно, есть где то похожая или такая же тема, но я зашел в интернет с мобильного и скорость очень низкая,...

Перевод из двоично-десятичной в двоичную систему счисления
Нужна помощь: создать подпрограмму для перевода числа из двоично-десятичной системы в двоичную (Паскаль)

Перевод чисел с остатком из десятичной в двоичную систему счисления
Помогите написать программу в паскале, которая переводила число с остатком из десятичной системы в двоичную систему счисления, т.е целой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
51
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru