Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Преобразование целого числа в набор битов и обратно

Delphi , Синтаксис , Преобразования

Преобразование целого числа в набор битов и обратно

Автор: Delirium
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Преобразование целого числа в набор битов и обратно

При операциях с битовыми значениям удобно обращаться к кажджому биту,
как к элементу строки, причём так, чтобы 1-й бит - был 1-й символ строки,
а не последний.

Зависимости: Windows, SysUtils, Math
Автор:       Delirium, Master_BRAIN@beep.ru, ICQ:118395746, Москва
Copyright:   Delirium (Master BRAIN)
Дата:        29 мая 2002 г.
***************************************************** }

function IntToRBin32(Value: Cardinal): string;
var
  i: integer;
begin
  SetLength(Result, 32);
  for i := 1 to 32 do
    if (Value shl (i - 1)) shr 31 = 0 then
      Result[33 - i] := '0'
    else
      Result[33 - i] := '1';
end;

function RBin32ToInt(Value: string): Cardinal;
var
  i: integer;
begin
  Result := 0;
  for i := 1 to Length(Value) do
    if Value[i] = '1' then
      Result := Result + Round(IntPower(2, i - 1));
end;

Программный код на Delphi, который содержит две функции: IntToRBin32 и RBIn32ToInt. Эти функции конвертируют между целочисленным значением и строковой представлением в двоичном формате.

Функция IntToRBin32:

Эта функция принимает целочисленное значение как входной параметр и конвертирует его в 32-разрядную строковую представление в двоичном формате. Строка представлена в обратном порядке, то есть наименее значимый бит (LSB) хранится в начале строки, а наибольшее значимое значение (MSB) хранится в конце.

Распределение функции:

  1. Она инициализирует пустую строку Result длиной 32.
  2. Она проходит через каждое позицию бита от 1 до 32 с помощью переменной i.
  3. Для каждой позиции бита она проверяет, является ли соответствующий бит установленным (т.е., равен 1) путем выполнения побитового сдвига (Value shl (i - 1)) и затем сдвига вправо (shr 31). Если результат равен 0, то это означает, что бит не установлен.
  4. Если бит установлен, она устанавливает соответствующий символ в строке Result на '1', иначе - на '0'.

Функция RBIn32ToInt:

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

Распределение функции:

  1. Она инициализирует результат целочисленного значения Result равным 0.
  2. Она проходит через каждый символ в строке ввода с помощью переменной i.
  3. Для каждого символа, если он равен '1', она добавляет соответствующую степень двойки (рассчитанную как IntPower(2, i - 1)) к Result.

Альтернативное решение:

Вместо реализации этих функций с нуля можно использовать встроенные функции конвертации Delphi, такие как IntToBin и BinToInt. Эти функции более эффективны и проще для использования.

Например:

function IntToRBin32(Value: Cardinal): string;
begin
  Result := IntToBin(Value);
end;

function RBin32ToInt(Value: string): Cardinal;
begin
  Result := StrToInt('0b' + Value);
end;

В этом альтернативном решении IntToBin конвертирует целочисленное значение в строковое представление в двоичном формате в обратном порядке. Пrefix '0b' добавляется к входной строке, чтобы указать, что это двоичное число.

С другой стороны, StrToInt конвертирует строку в целочисленное значение. Конкатенируя prefix '0b' и входную строку, мы можем конвертировать строковое представление в двоичном формате обратно в целочисленное значение.

В статье описывается функции IntToRBin32 и RBin32ToInt, которые предназначены для преобразования целых чисел в набор битов и обратно.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Преобразования ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:44:10/0.0058708190917969/1