Wie kann ich short binär ausgeben?
-
finix schrieb:
const unsigned short short_bits = sizeof(unsigned short) * 8;
hätt' ich das geschrieben dann hätte mir jetzt einer erzählt man solle CHAR_BIT statt 8 verwenden
-
finix schrieb:
Die ist wirklich übel. Wie wär's mit nem Kommentar, in der nächsten Zeile am besten?
Häh?
-
finix schrieb:
Windoof schrieb:
for(i=1;i<x;i*=2);
Die ist wirklich übel. Wie wär's mit nem Kommentar, in der nächsten Zeile am besten?
bitte keinen kommentar.
-
net schrieb:
finix schrieb:
const unsigned short short_bits = sizeof(unsigned short) * 8;
hätt' ich das geschrieben dann hätte mir jetzt einer erzählt man solle CHAR_BIT statt 8 verwenden
Ok, dann die hier revidierte Fassung, inklusive <climits> und korrekter Terminologie:
#include <iostream> #include <climits> int main() { unsigned short num = 4242; const unsigned short short_bits = sizeof(unsigned short) * CHAR_BIT; unsigned short mask = 1 << short_bits-1; do { std::cout << ((num & mask) != 0); } while ((mask >>= 1) != 0); std::cout << std::endl; }
-
volkard schrieb:
bitte keinen kommentar.
Zum Code oder zur Erklärung?
-
finix schrieb:
const unsigned short short_bits = sizeof(unsigned short) * CHAR_BIT;
gibts dafür nicht traits? mach das mal modern.
-
volkard schrieb:
finix schrieb:
const unsigned short short_bits = sizeof(unsigned short) * CHAR_BIT;
gibts dafür nicht traits? mach das mal modern.
Ja, genau, du hast recht.
Am besten als template realisiert.
Mit Policy, führende Nullen ausgeben oder nicht.
Und Spezialfallbehandlung, min & max z.B.
Diese simple Übungsaufgabe gehört echt verkompliziert.
-
finix schrieb:
volkard schrieb:
finix schrieb:
const unsigned short short_bits = sizeof(unsigned short) * CHAR_BIT;
gibts dafür nicht traits? mach das mal modern.
Ja, genau, du hast recht.
Am besten als template realisiert.
Mit Policy, führende Nullen ausgeben oder nicht.
Und Spezialfallbehandlung, min & max z.B.
Diese simple Übungsaufgabe gehört echt verkompliziert.sorry, aber wer so grottenhäßlichen code schreibt wie du, der muss auch mal auf mich hören. schau, ob die numeric_limits benutzen kannst. und berichte am nesten nachher hier.
-
finix schrieb:
volkard schrieb:
bitte keinen kommentar.
Zum Code oder zur Erklärung?
den code nicht kommentieren.
sondern anders schreiben.for(i=1;i<x;i*=2) ;
oder
for(i=1;i<x;i*=2){ }
oder
for(i=1;i<x;i*=2) doNothing();
oder irgendwie halt, daß man das da sauber lesen kann. aber schmutzigen conde nicht kommentieren, statt zu reinigen.
-
volkard schrieb:
sorry, aber wer so grottenhäßlichen code schreibt wie du, der muss auch mal auf mich hören. schau, ob die numeric_limits benutzen kannst. und berichte am nesten nachher hier.
Oh, jetzt schreibe ich auch noch grottenhäßlichen Code oder was? Und hab noch nie was von numeric_limits gehört? Und das alles nur weil's dir nicht gefällt?
Irgendwie ging's doch eigentlich nur um eine Lösungsstrategie an sich für eine Anfängeraufgabe, oder? Mag sein dass du in diesem Fall recht hast und numeric_limits<unsigned short>::digits auch für Newbies selbsterklärend genug ist, oder es wenigstens sinnvoll genug wäre es schnell zu erklären.
volkard schrieb:
den code nicht kommentieren.
sondern anders schreiben.Ok, hätte ich vielleicht etwas ausführlicher kommentieren sollen. Hier meine Variante:
for (i=1;i<x;i*=2) ; // do nothing // oder speziell für diesen Fall: int i = 1; while (i<x) { i *= 2; }
volkard schrieb:
for(i=1;i<x;i*=2) ;
Naja, wenn's denn sein muss.
volkard schrieb:
for(i=1;i<x;i*=2){ }
Macht, finde ich zumindest, immer noch nicht unmittelbar deutlich was los ist.
volkard schrieb:
for(i=1;i<x;i*=2) doNothing();
Heute ist der 1.April, was?
Leere Methoden nicht zu kommentieren mag ja fast noch OK sein, aber leere Schleifenkörper müssen einfach kommentiert werden.
IMAO.
-
Wozu soll das gut sein? Man sieht doch, dass die Schleife leer ist. Bei doNothing(); würde ich eher noch nach der Definition suchen, um sicher zu gehen.
-
volkard schrieb:
den code nicht kommentieren.
sondern anders schreiben.for(i=1;i<x;i*=2) ;
oder
for(i=1;i<x;i*=2){ }
oder
for(i=1;i<x;i*=2) doNothing();
bringt alles nix. es sieht immer so aus als ob du eine art 'delay' machen würdest. gerade die letzte variante ist besonders irreführend. nur ein schicker kommentar hilft hier weiter...
for(i=1;i<x;i*=2); /* bits zählen (oder was immer das machen soll) */
-
Oh gott... seid ihr peinlich... wollt ihr mich alleaufden Arm nehmen? - Achja..., richtig... heut ist der 1.4. April April!
Jungs, es ist dochsowas von scheißegal, wie man diese leere Schleife darstellt, genau genommen ist sie ja nicht leer, nur der Schleifenkopf bildet hier schon den Schleifenkörper dar, deshalb das Semikolon gleich dahinter. Ein Programmierer, der das nicht sofort erkennt, hat meiner Meinung nach auch kein Kommentar verdient. Leute, diese Schleife
for(i=1;i<x;i*=2);
ist doch wohl eindeutig, oder...? Und die Darstellung ist Geschmackssache. wenn ihr das nicht so lassen wollt, schreibt doch meinetwegen 3000 Zeilen Kommentare drunter, ist mir sowas von latte, aber macht diese Zeile deshalb bitte nicht gleich schlecht, nur weil sie nicht 100%ig so aussieht, wie ihr es machen würdet.
-
Windoof schrieb:
Jungs, es ist dochsowas von scheißegal, wie man diese leere Schleife darstellt
... welch Weisheit aus deiner erschöpfenden Erfahrung im Umgang mit grösseren Softwareprojekten.... verschone uns doch bitte damit ja?
-
Ach junix, wie habe ich doch auf dein Kommentar nur gewartet, welch sinnloser Versuch mich wiedermal zu erniedrigen. Sage mir doch, oh heiliger Moderator, mit unendlich großer Erfahrung: Welchen Unterscheid macht es, wenn ich das Semikolon _unter_ der Schleife positioniere? - Richtig: Keinen. Und verschone du mich bitte in Zukunft - wie ich jetzt schon zum 13. Mal wiederhole - mit deinen Sprüchen... und bitte: Tu nicht wieder so als würdest du für alle sprechen, denn das tust du garantiert nicht.
-
Windoof schrieb:
Welchen Unterscheid macht es, wenn ich das Semikolon _unter_ der Schleife positioniere? - Richtig: Keinen.
Funktional nicht. Optisch - und die Erfassungsmethode des Hirns in diesem Fall ist nunmal optisch - einen erheblichen. Ein Semikolon am Ende einer Zeile ist einfacher zu übersehen als eines direkt unterhalb -> Die Erfassung des Quelltextes geht schneller und fehlerfreier.
Die restliche Polemik kannst du dir schenken. Deine Klägelichen versuche meinen Stil zu immitieren wirken lediglich lächerlich. Speziell dann wenn es in einem billigen Austausch von wörtern in der zuvor gegen dich verwendeten Konstruktion gipfelt.
-
lol junix... muha.. das hättest du wohl gerne, dass ich dich nachahme *rofl* Nur mal so: Mein Programmierstil in Schleifen, Funktionen, etc:
for(;;) // Eingerückt, wie du siehst, hier steht dann die eine Zeile, die _in_ der Schleife ist. while(true) { // Ebenfalls eingerückt... hmm... warum nur... } for(;;); // Hier nicht eingerückt... hmm... wieso, wieso, wieso...
Und mal ganz ehrlich: Wenn etwas nicht eingedückt ist, weißt du bei dem Stil auch sofort: "Ist das 'ne leere Schleife oder nicht?" Aber natürlich ist das alles nur Unsinn, was ich hier erzähle... quatsch... alles Blödsinn... nicht wahr junix? *lol* *rofl* *lmao* *ablach*
-
vielleicht sollte man versuchen so leere schleifen zu vermeiden wo alles nur im kopf abläuft
-
Windoof schrieb:
lol junix... muha.. [...] *rofl* [...] *lol* *rofl* *lmao* *ablach*
Du disqualifizierst dich selber und merkst es nicht mal.
Nachahmen: Dann lies deine Antwort vorhin nochmal und vergleichs mal mit meinem Beitrag... Egal.
Was den Rest angeht: Wir haben ja ein Beispiel da von dir und das ist schlicht weniger schlüssig als wenn der Semikolon auf einer freien Zeile stehen würde.
Ausserdem hat vielleicht absolut recht.
-junix
-
Ob das eine Vorschrift ist... ich denke es ist jedem selbst überlassen, was er verwendet hat. Es gibt für fast alles eine plausible Erklärung... warum man jetzt allerdings für ein Semikolol zwei geschweifte Klammern nehmen soll... dafür habe ich noch keine entdeckt. Aber naja... ich halt mich aus diesem Thread lieber raus... weil ich schreib ja eh nur Schwachsinn... und nur Unfug... alles grundsätzlich falsch, was ich schreibe. Denk immer daran: Ich habe unrecht. *lach*