Ich habe versucht, dieses Problem für eine Weile zu lösen, konnte aber nicht mit ganzzahligen arithmetischen und bitweisen Operatoren. Ich denke jedoch, dass es möglich ist und es sollte ziemlich einfach sein. Was vermisse ich?Schnellste Möglichkeit zur Berechnung einer X-Bit Bitmaske?
Das Problem: einen ganzzahligen Wert von beliebiger Länge zu erhalten (dies das Problem nicht relevant ist), damit auf 1 und den Rest setzt beispielsweise gegeben 31 die Anzahl auf 0 X niedrigstwertigen Bits ist, I müssen einen ganzzahligen Wert erhalten, der gleich 0x7FFFFFFF ist (31 niedrigstwertige Bits sind 1 und die restlichen Nullen).
Natürlich, die Verwendung einer Schleife OR-in eine verschobene 1 zu einem Integer X mal wird die Aufgabe erledigen. Aber das ist nicht die Lösung, nach der ich suche. Es sollte mehr in Richtung (X << Y - 1)
sein, also keine Schleifen verwenden.
Es sollte nicht, solange Sie zuerst 1 zu Uint werfen (weiß nicht C#, so weiß nicht wie). Dann wird es auf 0-1, d. H. 32 1 auf einer 32-Bit-Maschine ausgewertet. – doublep
Sie haben die Lösung, nach der ich gesucht habe. Einfach und unkompliziert, ohne Schleifen. Und wenn X gleich der Bitlänge der Ganzzahl ist, werden alle Bits 1 wie erwartet. Es funktioniert sogar für die Ecke, wo X = 0. Danke. – Virtlink