
[PASCALABC] Создать объект BitString для работы с битовой строкой длиной 8 бит. Определить метод
инициализации бинарного числа, а также получения его инверсии и дополнительного кода (инверсия бинарного числа с добавлением единицы к младшему разряду). Написать программу, демонстрирующую работу с созданным классом

Ответы на вопрос

type
BitSring = class
private
BitStr: byte;
function GetStr := BitStr;
function StrToByte(s: string): byte;
begin
Result := 0;
s := s.Left(8);
var p: byte := 1;
var len := s.Length;
for var i := len downto 1 do
begin
if s[i] = '1' then
Result += p;
p := p shl 1;
end
end;
public
property bit8: byte read GetStr;
constructor(st: string);
begin
BitStr := StrToByte(st);
end;
constructor(n: byte);
begin
BitStr := n;
end;
constructor;
begin
BitStr := 0;
end;
function Inv8 := new BitSring(not BitStr);
function Mod8 := new BitSring(not BitStr + 1);
function ToString: string; override;
begin
Result := '';
var n: byte := BitStr;
while n > 0 do
begin
Result := (if n mod 2 <> 0 then '1' else '0') + Result;
n := n shr 1
end;
var len := Result.Length;
if len < 8 then
Result := '0' * (8 - len) + Result
end;
end;
begin
var x := new BitSring(ReadString);
Println(x);
Println(x.Inv8);
Println(x.Mod8);
end.
Пример работы:
1011011
01011011
10100100
10100101



Вот пример реализации класса BitString
на языке программирования PascalABC.NET, который позволяет работать с битовой строкой длиной 8 бит и выполнять операции инверсии и получения дополнительного кода для бинарного числа:
pascalprogram BitStringDemo; type BitString = class private bits: array[0..7] of Integer; public constructor Create(binary: String); procedure Invert(); procedure CalculateTwosComplement(); function ToString: String; end; constructor BitString.Create(binary: String); var i: Integer; begin if Length(binary) <> 8 then raise Exception.Create('Binary string must be 8 bits long'); for i := 1 to 8 do bits[i - 1] := StrToInt(binary[i]); end; procedure BitString.Invert(); var i: Integer; begin for i := 0 to 7 do bits[i] := 1 - bits[i]; end; procedure BitString.CalculateTwosComplement(); var carry: Integer; i: Integer; begin carry := 1; for i := 7 downto 0 do begin bits[i] := 1 - bits[i] + carry; carry := bits[i] div 2; bits[i] := bits[i] mod 2; end; end; function BitString.ToString: String; var i: Integer; begin Result := ''; for i := 0 to 7 do Result := Result + IntToStr(bits[i]); end; var binaryStr: String; bitStr: BitString; begin Write('Enter an 8-bit binary number: '); Readln(binaryStr); try bitStr := BitString.Create(binaryStr); Writeln('Original binary number:', bitStr.ToString); bitStr.Invert(); Writeln('Inverted binary number:', bitStr.ToString); bitStr.CalculateTwosComplement(); Writeln('Twos complement:', bitStr.ToString); except on E: Exception do Writeln('Error:', E.Message); end; end.
Скопируйте этот код в среду PascalABC.NET, запустите его и следуйте инструкциям ввода и вывода для проверки функциональности класса BitString
.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili