[fpc-pascal] bitwise operations using AND, OR, XOR, NOT
Bernd Oppolzer
bernd.oppolzer at t-online.de
Tue Jan 10 22:15:27 CET 2017
Am 08.01.2017 um 23:04 schrieb Sven Barth:
>
>>
>> This depends on the Pascal compiler you use;
>> the old Wirth "Standard" yields syntax errors, if you use and etc. on types
>> other than boolean:
>>
> We're here on the FPC mailing list, so I personally only care about the
> capabilities of FPC and that definitely supports bitwise operations (and
> so do TP and Delphi).
>
> Regards,
> Sven
>
In the meantime I read some articles about the history of FPC and TP and
Delphi and learned that these extensions had been made very early
in this history.
While I mentioned some days before that I don't want to compete with FPC
with my product, which is an extension of Stanford Pascal aka AAEC Pascal
(a Wirth P4 descendant) and which I ported recently to Windows, OS/2 and
Linux, I anyway will continue to add features that I consider useful.
So here we go:
1 LINE # D/NEST LVL < STANFORD PASCAL, OPPOLZER VERSION OF
01.2017 > 21:55:58 10.01.2017 PAGE 1
------ ------ --- ---- ---
1 ) program TESTAND ( OUTPUT ) ;
2 )
3 ) var X , Y : INTEGER ;
4 360D 1) A , B : BOOLEAN ;
5 362D 1)
6 362D 1) begin (* HAUPTPROGRAMM *)
7 ) X := 0X0E ;
8 1N 1) Y := 0X1D ;
9 1N 1) A := FALSE ;
10 1N 1) B := TRUE ;
11 1N 1) WRITELN ( 'x ' , X ) ;
12 1N 1) WRITELN ( 'y ' , Y ) ;
13 1N 1) WRITELN ( 'x and y ' , X and Y ) ;
14 1N 1) WRITELN ( 'x and y ' , X & Y ) ;
15 1N 1) WRITELN ( 'x or y ' , X or Y ) ;
16 1N 1) WRITELN ( 'x or y ' , X | Y ) ;
17 1N 1) WRITELN ( 'x xor y ' , X XOR Y ) ;
18 1N 1) WRITELN ( 'not x ' , not X ) ;
19 1N 1) WRITELN ( 'not y ' , not Y ) ;
20 1N 1) WRITELN ( 'a ' , a ) ;
21 1N 1) WRITELN ( 'b ' , b ) ;
22 1N 1) WRITELN ( 'a and b ' , A and B ) ;
23 1N 1) WRITELN ( 'a and b ' , A & B ) ;
24 1N 1) WRITELN ( 'a or b ' , A or B ) ;
25 1N 1) WRITELN ( 'a or b ' , A | B ) ;
26 1N 1) WRITELN ( 'a xor b ' , A XOR B ) ;
27 1N 1) WRITELN ( 'not a ' , not A ) ;
28 1N 1) WRITELN ( 'not b ' , not B ) ;
29 1N 1) end (* HAUPTPROGRAMM *) .
**** NO SYNTAX ERROR(S) DETECTED.
**** 29 LINE(S) READ, 0 PROCEDURE(S) COMPILED,
**** 232 P_INSTRUCTIONS GENERATED, 0.00 SECONDS IN COMPILATION.
and the outcome:
c:\work\herc\pcode>pcint prr=testand.prr inc=passtrx,paslibx,
pas=testand.pas out=testand.prrlis
PCINT (Build 1.0 Jan 10 2017 21:51:56)
x 14
y 29
x and y 12
x and y 12
x or y 31
x or y 31
x xor y 19
not x -15
not y -30
a FALSE
b TRUE
a and b FALSE
a and b FALSE
a or b TRUE
a or b TRUE
a xor b TRUE
not a TRUE
not b FALSE
*** Pascal Programm STP ***
More information: http://bernd-oppolzer.de/job9.htm
Kind regards
Bernd
More information about the fpc-pascal
mailing list