Es ist eine ziemlich nette Art und Weise, dies zu tun, dass viele Menschen nicht sofort offensichtlich finden.
Es hängt von der Tatsache ab, dass das Subtrahieren von eins von einer Zahl das aktuell niedrigstwertige Bit zurücksetzt und alle weniger signifikanten Bits einstellt.
So, das bitset
Teil für den Moment ignoriert, und nur mit einigem Integer-Typ handelt, können wir etwas tun:
unsigned x = 0b10110111011110111101111011000100;
unsigned m = 8;
unsigned mask = (1 << m) - 1;
unsigned result = x & mask;
ich es Ihnen überlassen würde das gleiche Grundidee zu machen std::bitset
Betreiber.
Wenn Ihre Absicht ist es, eine bitset ohne führende Nullen angezeigt werden, gut ... sorry, aber es nicht, dass direkt unterstützen, so dass, wenn Sie etwas tun:
std::bitset<15> x;
std::cout << x;
Sie über immer erhalten genau 15 Zeichen der Ausgabe, unabhängig davon, wie viele (oder wenige) davon sind Nullen. Es ist ziemlich einfach, Code zu schreiben, um die führenden Nullen auf eigene Faust zu überspringen (oder die bitset
zu einem stringstream
zu schreiben, dann schneiden Sie die führenden Nullen ab).
[Hier ist eine Dokumentation der API] (http://en.cppreference.com/w/cpp/utility/bitset). Ich bin sicher, du kannst es herausfinden. – StoryTeller
Ich versuchte es zu verschieben und ich konnte 000000000000000000000000011000100 anzeigen. Ich versuche, die 0s loszuwerden. Ich verstehe, dass es eine jugendliche Frage ist, aber ich finde nur heraus, wie man programmiert. –