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

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

Основы программирования 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, см. здесь.


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

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

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

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