Przesunięcie bitowe

0

Mam kłopot w uruchomieniem poniższej aplikacji, a chodzi mi tylko o informację na temat przesunięcia bitowego w prawo w Pascalu (pisane w TurboPascal 7.0). Czy przesunięcie w prawo wykonywane jest z zachowaniem znaku ? W Javie 5 >> 2 = 1, a -5 >> 2 = -2. Jak to wygląda w Pascalu (nie w Delphi) ?

program BinaryShift;
uses crt;

var
   x, y, result:integer;

   function shift(a : integer; b : integer) : integer;
   begin
        shift := (a shr b);
   end;

begin
     writeln('Liczba: ');
     read(x);
     writeln('O ile: ');
     read(y);
     writeln('Wynik: ', shift(x, y));
     readln;
end.
0
program BinaryShift;

var
   x, y, result: integer;

   function shift(a, b: integer): integer;
   begin
        shift:= a shr b;
   end;

begin
     write('Liczba: ');
     readln(x);
     write('O ile: ');
     readln(y);
     writeln('Wynik: ', shift(x, y));
     readln;
end.

Program w Turbo Pascal 7.1 (po kosmetycznych poprawkach) daje następujące wyniki:

Dla Integer
Liczba: 5    Liczba: -5
O ile: 2     O ile: 2
Wynik: 1     Wynik: 16 382
Dla ShortInt
Liczba: 5    Liczba: -5
O ile: 2     O ile: 2
Wynik: 1     Wynik: -2

Dla LongInt
Liczba: 5 Liczba: -5
O ile: 2 O ile: 2
Wynik: 1 Wynik: 1 073 741 822

1 użytkowników online, w tym zalogowanych: 0, gości: 1