home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 13 / bit / bits.inc < prev    next >
Encoding:
Text File  |  1988-03-25  |  1.5 KB  |  55 lines

  1. (* ------------------------------------------------- *)
  2. (*                 BITS.INC                          *)
  3. (*  Prozeduren und Funktionen zum setzen, löschen,   *)
  4. (*  testen und prüfen von Bits.                      *)
  5. (* ------------------------------------------------- *)
  6.  
  7. TYPE BitSet = ARRAY[0..15] OF BYTE;  (* oder BOOLEAN *)
  8.  
  9. Procedure SetBit (VAR HalbWort: INTEGER; n: INTEGER);
  10.  
  11. BEGIN
  12.   HalbWort := HalbWort OR (1 shl n);
  13. END;                                  (* 0.00030 sek *)
  14.  
  15.  
  16. Procedure DelBit (VAR HalbWort: INTEGER; n: INTEGER);
  17.  
  18. BEGIN
  19.   HalbWort := NOT (1 shl n) AND HalbWort;
  20. END;                                  (* 0.00030 sek *)
  21.  
  22.  
  23. FUNCTION IfBit (HalbWort, n: INTEGER): BOOLEAN;
  24.  
  25. BEGIN
  26.   IfBit := (HalbWort OR (1 shl n) = HalbWort);
  27. END;                                  (* 0.00033 sek *)
  28.  
  29.  
  30. PROCEDURE UnpackBit (VAR Bits    : BitSet;
  31.                          Halbwort: INTEGER);
  32. VAR i: INTEGER;
  33.  
  34. BEGIN
  35.   i := 0;
  36.   FillChar(Bits, 16, 0);
  37.   WHILE HalbWort <> 0 DO BEGIN
  38.     Bits[i] := HalbWort MOD 2;
  39.     HalbWort := HalbWort shr 1;
  40.     i := Succ(i);
  41.   END;
  42. END;                         (* BYTE   : 0.00900 sek *)
  43.                              (* BOOLEAN: 0.00943 sek *)
  44.  
  45. PROCEDURE Packbit (Bits: BitSet;
  46.                    VAR: HalbWort: INTEGER);
  47. VAR i: INTEGER;
  48.  
  49. BEGIN
  50.   HalbWort := 0;
  51.   FOR i := 0 TO 15 DO
  52.     IF Bits[i] THEN          (* IF Bits[i] <> 0 THEN *)
  53.       HalbWort := HalbWort OR (1 shl i);
  54. END;
  55.