Управление шестнадцатеричными числами в Pascal - PullRequest
0 голосов
/ 24 января 2020

В настоящее время я читаю о манипулировании двоичными и шестнадцатеричными числами, и мне трудно выполнить задачу, и мне было интересно, если кто-нибудь может помочь прояснить этот вопрос для меня.

У меня шестнадцатеричное число '04831037', и мне нужно заменить первое число (0) на '1' с помощью программы Pascal. Я не уверен, как это сделать go.

Я знаю, как преобразовать целое число в шестнадцатеричное значение с помощью:

var 
  iNumber : Integer;

begin
  iNumber := 75698231;
  writeln(IntToHex(iNumber, 8));
end.

> Output: 04831037

Но теперь я не понимаю, как заменить одно число в выводе. Любая помощь будет принята с благодарностью

1 Ответ

1 голос
/ 24 января 2020

Шестнадцатеричные числа имеют основание 16, т. Е. Каждое di git представляет значение 0..15.

Для формирования значения ex. 16, т.е. можно использовать следующее выражение: $ 10 (( Примечание: знак $ означает, что это шестнадцатеричное значение )

16 = $ 10 = 1 * 16 1 + 0 * 16 0

Значение 28 ($ 1 C) выражается как:

28 = $ 1 C = 1 * 16 1 + 12 * 16 0

Чтобы добавить $ 10000000 к номеру, используйте

$ 10000000 = 1 * 16 7

В коде, который будет выглядеть так:

iNumber := iNumber + $10000000; 

Давайте посмотрим на вопрос:

У меня шестнадцатеричное число «04831037», и мне нужно заменить первое число (0) на «1»

Это означает, что вы сначала вычтете число с $ 00000000 и затем добавьте $ 10000000.

В коде это будет:

iNumber := $04831037;
iNumber := iNumber - $00000000 + $10000000;
WriteLn(IntToHex(iNumber,8)); // Writes '14831037'  
...