Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: Verständnisfrage Boolean <-> Zahl

  Alt 17. Dez 2013, 00:03
Der Hintergrund ist übrigens einfach der NOT-Operator. Binär gesehen dreht der ja einfach nur jedes Bit um. Und Prozessoren können einzelne Bits nicht so toll (bzw. überhaupt nicht) benutzen. Also hat man für einen Boolean meist mindestens ein Byte zu benutzen. Man kam daher zu dem Entschluss, dass "false" = 0 sein sollte, also 0b00000000. Dreht man nun jedes Bit davon durch NOT um, erhält man 0b11111111. Jetzt kommt es auf ein Mal darauf an, als was ich den Wert interpretiere: Byte oder SmallInt (signed byte)! "true" ist daher, im Falle von Byte als benutzte Datenstruktur, entweder -1 oder 255. Sicher ist nur, das "false"=0.

Delphi macht es hier ein wenig anders, weil man sich wohl dachte: "Jou. Das ist seltsam." Und man ging daher, und legte FALSE=0, und TRUE=1 fest, und machte den NOT-Operator so intelligent, dass er zwischen Binär-NOT und logischem NOT zu unterscheiden weiss. Man ist ja immerhin in einer typsicheren Sprache unterwegs, da kann man das hervorragend so tun. Wenn jedoch irgendwelche WinAPI-(C)-Gelöte beteiligt sind, wird klammheimlich - und das ist auch, warum es Types wie LongBool usw. gibt - konvertiert.

Letztlich kann man sich daher im Grunde nur auf eines wirklich verlassen: FALSE=0. Alles andere ist TRUE, egal was es nun genau ist.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat