Согласие на обработку персональных данных.



20.02.2018
Новая задача Найти сумму делителей натурального числа.

16.02.2018
Новые видео и статья Процедура Append.

07.02.2018
Журнал Автоматизация и Программирование: Свежий номер.

06.02.2018
Новые видео и статья Двоичное число в виде строки.

27.01.2018
Новые видео и статья Как преобразовать число в двоичную строку.

Раздел: Стандартные функции Паскаля

Как преобразовать число в двоичную строку

Как стать программистом 2.0 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...

В программировании довольно часто приходится выполнять различные преобразования: кодировки, типы данных, единицы измерения и т.п.

А в некоторых направлениях программирования также довольно часто используются числа в двоичном представлении. Мне, по крайней мере, приходится иметь с этим дело постоянно.

Нередко я создавал свои собственные функции для подобных преобразований. Это полезно для развития и обучения.

Однако при профессиональной разработке времени на создание таких функций нет. Поэтому лучше использовать готовые. С одной из таких функций я вас сегодня познакомлю.

Функция BinStr

Функция BinStr Преобразует целое число в строку в двоичном представлении. Синтаксис:

 
function binStr(Val : Longint; cnt : byte) : shortstring;
 
function binStr(Val : int64; cnt : byte) : shortstring;
 
function binStr(Val : qword; cnt : byte) : shortstring;

Функция binStr возвращает строку, которая содержит двоичное представление целого числа, переданного через параметр Val. Количество символов в строке будет не более, чем указано в параметре cnt. То есть в строке будут только младшие (правые) биты числа. Чтобы получить полное представление больших целых чисел, надо указывать cnt = 32. Иначе старшие разряды могут не попасть в результат.

Пример:

 
program binstrfunc;
 
var x, y  : integer;
 
begin
  x := 100;
  y := x * 245;
  WriteLn(x, ' - ', binStr(x, 4));	//0100
  WriteLn(x, ' - ', binStr(x, 8));	//01100100
  WriteLn(y, ' - ', binStr(y, 16));     //0101111110110100  
  
  z := High(Int64);
  WriteLn(z, ':', #10#13, binStr(z, 64));
  z := Low(Int64);
  WriteLn(z, ':', #10#13, binStr(z, 64));

  ReadLn;
end.

Двоичное число в виде строки

Зачем вообще может понадобиться выводить двоичное число в виде строки?

Бывает это не так уж и часто. Но всё-таки иногда такая необходимость возникает. Например, если вам надо отследить на экране значения каждого бита в числе.

Я довольно часто упаковываю в число значения логических переменных, где каждый разряд соответствует, например, состоянию какого-то датчика. Это бывает необходимо, когда надо сэкономить место и время при передаче данных по последовательному каналу. Тогда, например, вместо передачи 32 логических переменных я передаю всего 1 переменную типа WORD, в которой каждый разряд соответствует одной логической переменной. А уже в программе я это число дешифрую и таким образом получаю состояния, например, 32-х датчиков.

Ну а если программа находится в ходе отладки и пока нет времени на выполнение вывода на экран всех 32-х датчиков, то можно просто вывести это число в двоичной форме и таким образом понять, в каком состоянии находится тот или иной датчик. Вот здесь то и пригодится функция BinStr.

Но вообще это уже другая история...

P.S. Как создать собственную функцию, подобную BinStr, см. здесь.


Директивы компилятора Директивы компилятора
Как это ни странно, но даже многие опытные программисты не используют директивы компилятора, считая их чем-то ненужным и бесполезным. А между тем, директивы компилятора - это очень классная штука. Если их умело применять в своих программах, то можно существенно сократить время на разработку и уменьшить количество рутинных операций. Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика