Formale Verifikation - Aufgaben

Bitlänge einer Zahl

Gesucht ist die Länge n der Binär­darstellung einer natürlichen Zahl a. So hat beispiels­weise die Zahl a = 13 die Binär­darstellung 1101, denn 13 = 1·8 + 1·4 + 0·2 + 1·1. Die Binär­darstellung der Zahl 13 beansprucht 4 Ziffern, die Bitlänge beträgt also 4.

Die Bitlänge einer natürlichen Zahl a lässt sich berechnen, indem die kleinste Zweierpotenz 2k bestimmt wird, die größer als a ist. Für a = 13 beispiels­weise ist 24 = 16 diese kleinste Zweierpotenz. Der Exponent k = 4 entspricht genau der Bitlänge von a.

Aufgabe:  (Berechnung der Bitlänge einer natürlichen Zahl a)

Gegeben sei folgendes Programm X:

k=0;
p=1;
while (p<=a)
{
    k=k+1;
    p=p*2;
}

Das Programm X berechnet den kleinsten Exponenten k, derart dass 2k > a.

 

Ermitteln Sie die schwächste Vorbedingung Q für die Korrektheits­formel {Q} X {R} mit der Nach­bedingung

R:   2k > a

Wenn das Programm terminiert, dann ist k der kleinste Exponent, der diese Nach­bedingung erfüllt, da k bei 0 beginnt und bei jedem Schleifen­durchlauf um 1 größer wird.

Alternativ kann die Nach­bedingung etwas komplizierter als 2k-1 ≤ a  ∧  2k > a gewählt werden.

 

Hinweis: Gehen Sie schrittweise vor. Beweisen Sie zunächst die While-Schleife, indem Sie die beiden Prämissen der Schlussregel für die While-Schleife beweisen. Ermitteln Sie aus der ersten Prämisse die Schleifen­invariante P.

 

 

Weiter mit:  [up]

 


H.W. Lang   mail@hwlang.de   Impressum   Datenschutz
Diese Webseiten sind größtenteils während meiner Lehrtätigkeit an der Hochschule Flensburg entstanden