array of bits -> byte komische Nebenwirkung

Für Fragen von Einsteigern und Programmieranfängern...

Re: array of bits -> byte komische Nebenwirkung

Beitragvon siro » 24. Apr 2017, 15:52 Re: array of bits -> byte komische Nebenwirkung

Hier ist ja eine Beschreibung:

http://wiki.freepascal.org/Variables_and_Data_Types

Type Bytes Ord(True)
Boolean 1 1
ByteBool 1 Any nonzero value
WordBool 2 Any nonzero value
LongBool 4 Any nonzero value

Das hatte ich gesucht :wink:
Grüße von Siro
"C" verCehnfacht die Entwicklungszeit...
siro
 
Beiträge: 206
Registriert: 23. Aug 2016, 13:25
Wohnort: Berlin
OS, Lazarus, FPC: Windows 7 Windows 8.1 Windows 10 | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 24. Apr 2017, 17:02 Re: array of bits -> byte komische Nebenwirkung

marcov hat geschrieben:FPC hat 2 boolean typen, und deren Logic kann man nicht ändern.

ich weiß nicht, bin auf jeden Fall mächtig verwirrt.

Das ist doch nur Theorie. Sobald man damit zu tun hat, dass hinter dem Typen Boolean mit seinen beiden Zuständen auch nur nur Bits und Bytes stecken, stößt man auf das Problem, dass
(1) der Typ Boolean 1 Byte groß ist
(2) 1 Byte aus 8 Bits mit insgesamt 256 möglichen Werten besteht.
Also muss man die 256 Werte irgendwie den beiden Boolean-Werten zuordnen. Da verliert eine Aussage "TRUE = 1" ihren Sinn. Was ist, wenn in dem Byte, das als BOOLEAN umgewandelt wird, zufällig der Wert 2 steht? Wenn dies streng geprüft würde, dann müsste das folgende Programm in den letzten beiden Zeilen abstürzen. - Macht es nicht, auch mit allen Checks gesetzt. Wenn TRUE nur 1 sein kann, wieso "weiß" das TRUE von "boolean(2)" dann noch, dass es aus der 2 erzeugt worden ist?
Code: Alles auswählen
program Project1;
begin
  WriteLn(TRUE);                 // --> TRUE
  WriteLn(ord(TRUE));            // --> 1
 
  WriteLn(boolean(2));           // ---> TRUE
  WriteLn(ord(boolean(2)));      // ---> 2
end.   


Ich denke, das einzige, das bei der binären Darstellung von Boolean's sicher ist, dass der Wert 0 dem Boolean-Wert FALSE entspricht, und alle anderen Werte TRUE sind
wp_xyz
 
Beiträge: 2188
Registriert: 8. Apr 2011, 08:01

Beitragvon Socke » 25. Apr 2017, 08:17 Re: array of bits -> byte komische Nebenwirkung

Die Aussage Ord(True) = 1 steht damit nicht im Widerspruch. Hier wurde ja nur eine Aussage über den Wert des Wortes True getätigt, nicht aber über den Wert von ord(<ein anderer Wert, der zu True äquivalent ist>) :D
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2374
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian | 
CPU-Target: 32bit x86 armhf
Nach oben

• Themenende •
Vorherige

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried