Bits zaehlen
-
Hallo,
ich arbeite K&R durch und verstehe ein Beispiel nicht ganz (Kap.2.10):
Es geht um eine Funktion, die die 1-Bits eines unsigned int zaehlt:
int bitcount(unsigned x) { int b; for(b = 0; x != 0; x >>= 1) if(x & 01) b++; return b; }
Warum wird x mit einem Oktal-Wert (01) verglichen? Haette man dort nicht
einfach eine 1 hinschreiben koennen?Danke
-
gigg schrieb:
Haette man dort nicht
einfach eine 1 hinschreiben koennen?Das ist doch eine 1!
Genau wie 0x01 auch eine 1 wäre. Eine 1 ist eine 1, egal welches Zahlensystem ich für die Darstellung benutze.
-
Belli schrieb:
gigg schrieb:
Haette man dort nicht
einfach eine 1 hinschreiben koennen?Das ist doch eine 1!
Genau wie 0x01 auch eine 1 wäre. Eine 1 ist eine 1, egal welches Zahlensystem ich für die Darstellung benutze.Ja, das ist mir schon klar. Ich frage mich nur, ob die oktale Darstellung
einen bestimmten Sinn macht, den ich nicht verstehe. Ich finde das Buch
echt grossartig, aber manchmal wird etwas wenig erklaert.
-
Vermutlich soll mit 01 nur signalisiert werden, dass man hier mit Binärwerten arbeitet. (C hat leider keine Binärliterals.)
-
Ok. Danke fuer die Antworten.
Vielleicht erscheint die Frage auch
ein bisschen banal, aber ich will das Buch gruendlich durcharbeiten
und nicht einfach weitergehen im Text, wenn ich Dinge nicht verstanden
habe.Danke
-
Das ist sehr löblich. Aber:
Wenn da nun1
gestanden hätte, hättest Du auch nicht gefragt, warum da nicht
0x01
steht, oder?
Egal, viel Spaß und viel Erfolg beim Lernen!
-
Folgende Variante finde ich allerdings etwas besser, da in vielen Fällen ja nur wenige Bits gesetzt sind (falls es jemanden interessiert):
long tmp = zahl; int length = 0; while (tmp != 0) { length++; tmp = tmp & (tmp - 1); } //Länge wurde bestimmt
-
rüdiger schrieb:
Vermutlich soll mit 01 nur signalisiert werden, dass man hier mit Binärwerten arbeitet. (C hat leider keine Binärliterals.)
Naja, K&R ist ein uralter Schinken. Die beiden Jungs, die das Buch verfassten, hockten für Gewöhnlich vor einem Großrechner (PDP-11 oder so) und da war das Oktalsystem sehr geläufig.
-
Z schrieb:
Großrechner (PDP-11 oder so)
Das war ein Minicomputer.
-
Bashar schrieb:
Z schrieb:
Großrechner (PDP-11 oder so)
Das war ein Minicomputer.
Trotzdem größer als ein PC
-
So mini sieht der nicht aus
http://upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Pdp-11-40.jpg/450px-Pdp-11-40.jpg
-
Aber deutlich minier als sowas:
http://img.tfd.com/cde/_IBMMFRM.GIF
-
Z schrieb:
rüdiger schrieb:
Vermutlich soll mit 01 nur signalisiert werden, dass man hier mit Binärwerten arbeitet. (C hat leider keine Binärliterals.)
Naja, K&R ist ein uralter Schinken. Die beiden Jungs, die das Buch verfassten, hockten für Gewöhnlich vor einem Großrechner (PDP-11 oder so) und da war das Oktalsystem sehr geläufig.
Hatte die nicht schon 8-Bit Bytes? Dann wäre Hex doch praktischer.
gigg schrieb:
So mini sieht der nicht aus
http://upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Pdp-11-40.jpg/450px-Pdp-11-40.jpg
Sie hat halt kein eigenes Gebäude gebraucht und nicht mal einen Raum gefüllt.