@murphy
QuoteUnsinn. Egal wie eine Architektur die Bits in den Registern oder im Speicher anordnet, so sind sie auf jeden Fall bei allen Zahlen in der gleichen Reihenfolge abgelegt, also funktioniert die AND-Operation einwandfrei.
Ja, in der gleichen Reihenfolge sind Bits schon abgelegt (sieht man mal von MSB und LSB ab, denn das aufzudröseln obliegt Perl), nein, mein Einwand bezieht sich ja auch nicht auf die "Reihenfolge" von Bits, sondern auf deren Bedeutung (nicht Syntax, sondern Semantik (dieser Unterschied sollte schon klar sein! )), aber nicht in der gleichen "Repräsentation"( ! ). Z.B. gibt es eine Repräsentation von Integers, bei der es sowohl +0 als auch -0 gibt. Negative und positive Zahlen sind in dieser Darstellung in ihrem Niederwertigsten Bit eben nicht gleich, d.h. "3&1" ist verschieden von "-3&1" (und doch sind beide "ungerade"). Es kommt also sehr wohl auf die interne Repräsentation von Zahlen an. Das ist in verschiedenen Informatik-Büchern nachzulesen (bitte nötige mich nicht dazu, den Nachweis zu erbringen. Ich weiß nicht "wo", aber ich weiß "daß" ! ).
Wie das nach pack und unpack ist, weiss ich nicht, aber auf jeden Fall führt Modulo eine "arithmetische" Operation durch und "muß" daher zum richtigen Ergebnis führen (wenn es sich bei dem Argument denn um eine Zahl handelt und nicht etwa um ein pack-bit-gedrösel), während das eine "boolsche" Operation (wie "&") eben gerade "nicht" tut, weil sie auf Bit-Ebene operiert.
Sorry, Murphy, aber es ist "wirklich" so!
@GoodFella
Schön, es ist ja unbestritten, daß "&" auf den meisten Plattformen das tut, was Du denkst (Dein Beispiel in Ehren, aber es hat eben nur eine Bedeutung für Deine Plattform, nicht für den allgemeinen Fall, um den es hier geht).
Ich glaube, es ist allgemein nicht so sehr im Bewußtsein von Programmierern, was sich auf der untersten Ebene eines Rechners abspielt (heute weiß doch keiner mehr so richtig, was ein Compiler eigentlich so alles tut und wie er Dinge auf Maschinen-Ebene abbildet). Auch der Unterschied zwischen "arithmetischen" Operationen (auf der Abstraktion eines Zahlenmodells) und "boolschen" Operationen auf Bit-Level (niederste Abstraktions-Stufe und daher plattformabhängig ! ), bzw. der "Unterschied" der jeweiligen Abstraktionsebene scheint nicht immer ganz durchzudringen.
Denkt bitte mal drüber nach, bevor ihr "Gegenfeuer" gebt. Ich äußere meine Bedenken nicht ohne Grund, d.h. ich bin keiner von denen, die mal so auf die Schnelle was posten, weil man sich etwas nicht vorstellen kann.
See (e.g.):
http://www.gdv.informatik.uni-frankfurt.de/lehre....pen.pdf
Greetz, Doc\n\n
<!--EDIT|docsnyder|1175543048-->