Wie kann ich short binär ausgeben?
-
ich glaub das volkard den code von finix scheisse findet, ist ein aprilscherz.
-
.... schrieb:
ich glaub das volkard den code von finix scheisse findet, ist ein aprilscherz.
das stimmt.
aber wenn ich was dagegen hätte, dann#include <iostream> #include <climits> //limits int main() //bracing style anders als unten { unsigned short num = 4242; const unsigned short short_bits = sizeof(unsigned short) * CHAR_BIT; //nutzlos? unsigned short mask = 1 << short_bits-1; //direkt berechenbar? do { //bracing style anders als oben std::cout << ((num & mask) != 0); ///using namespace? } while ((mask >>= 1) != 0); //bedingungen sollen nicht verändern std::cout << std::endl; //endl meiden, wenn '\n' gemeint ist } //zu viel blau im code
das führt unmittelbar zu
#include <iostream> using namespace std; int main() { typedef unsigned short us; us num = 4242; us mask = us(~num+num)/us(2)+us(1); do { cout << char('0'+bool(num & mask)); mask >>= 1; } while (mask); cout << '\n'; }
-
Naja, muss ich dir größtenteils zustimmen, aber ging ja darum das Prinzip zu veranschaulichen.
Frag mich nur was du gegen <climits> und std:: hast.
Und naja, ushort hätte's vielleicht auch getanNur der Bracing Style ist konsistent, wenn auch hier nicht ersichtlich: lediglich bei Funktions- und Methodenköpfen bekommt die Klammer 'ne eigene Zeile spendiert.
-
naja, da sich die begeisterung für
us mask = us(~num+num)/us(2)+us(1);
durchaus in grenten hält, mache ich das mal weg.
warum nicht nach links schieben?
#include <iostream> using namespace std; int main() { unsigned short num = 4242; for ( unsigned short mask=1 ; mask ; mask*=2 ) { cout << bool(short(num)<0); num*=2; } cout << '\n'; }