--- /dev/null
+PROGRAM ZWEIERPOTENZEN(OUTPUT);
+CONST NMAX=30;
+VAR A,REST,N,W,S:INTEGER;
+BEGIN A:=1;
+FOR N:=1 TO NMAX DO
+ BEGIN A:=A*2;
+ W:=1; S:=10;
+ WHILE S<=A DO BEGIN W:=W+1; S:=S*10 END;
+ WRITE(" ":20-W - W DIV 3);
+ FOR W:=W DOWNTO 1 DO
+ BEGIN IF (W MOD 3 = 0) THEN WRITE(" ");
+ S:=S DIV 10; WRITE((A DIV S) MOD 10 :1)
+ END;
+ WRITE(N:5," 0.");
+ W:=1;
+ REST:=10;
+ REPEAT IF (W MOD 3 = 0) THEN WRITE(" ");
+ W:=W+1;
+ WRITE(REST DIV A :1);
+ REST:=(REST MOD A)*10
+ UNTIL REST=0;
+ WRITELN
+ END
+END.