Zum Beispiel, 6 => [1,1,0]Was ist der schnellste Weg, eine int in eine binäre Darstellung in C zu konvertieren?
Antwort
Bits lesen Sie
char get_bit(unsigned int n, int bit_num){
if (bit_num < 0 || bit_num >= sizeof(int) * CHAR_BIT)
return -1;
return (n >> bit_num) & 1;
};
Sein Hauptproblem verwenden können, ist, dass es nicht schnell ist, aber OP nicht einmal angegeben, wenn er numers oder Ziffern gesucht .
Ich mag diese Antwort: nett und einfach, und wahrscheinlich sogar optimiert in eine native Bit-Test-Anweisung. Allerdings ein paar kleine Nitpicks: 1.) 'char' ist auf einigen Architekturen nicht signiert, also würde das Zurückgeben von' -1' wahrscheinlich '255' auf diesen Architekturen ergeben, 2.) Die Rückgabe eines' char' ist normalerweise nicht viel besser als Zurückgeben eines "int" aufgrund von Cs Neigung, Dinge zu fördern, und 3.) Wenn ich ich wäre, würde ich wahrscheinlich nur 'assert (bit_num> = 0 && bit_num
@Joey: Nun, es ist ein Beispiel für einen Programmierer, der den Code nach seinen Bedürfnissen verwenden und refrazieren wird und nicht in die Bibliothek gestellt werden soll :) – ruslik
Ich weiß nicht, aber ich würde so etwas wie
int[32] bits = {};
int value = 255;
int i = 0;
while (value)
{
bits[i++] = value & 1;
value = value >> 1;
}
Eine einfache und schnelle Art und Weise machen ist eine ganze Zahl ohne Vorzeichen zu verwenden, wie ein „Cursor“ und verschiebt den Cursor auf vorab:
1000000000000000
0100000000000000
0010000000000000
0001000000000000
0000100000000000
0000010000000000
0000001000000000
0000000100000000
...
bei jeder Iteration verwenden bitweise &
irgendwelche Bits gemeinsam, wenn die Anzahl und der Cursor Anteil zu sehen.
Eine einfache Implementierung:
// number of bits in an unsigned int
#define BIT_COUNT (CHAR_BIT * sizeof(unsigned int))
void toBits(unsigned int n, int bits[BIT_COUNT])
{
unsigned int cursor = (unsigned int)1 << (BIT_COUNT - 1);
unsigned int i;
for (i = 0; i < BIT_COUNT; i++, cursor >>= 1)
out[i++] = (n & cursor) ? 1 : 0;
}
unsigned x = number;
char buf[sizeof(int)*CHAR_BIT+1], *p=buf+sizeof(buf);
for (*--p=0; x; x>>=1) *--p='0'+x%2;
Warum nicht ''0' | x% 2'? – ruslik
Sie sollten mindestens '+' anstelle von '|' für reine Portabilität verwenden, da ''0'' nicht garantiert ist, gerade zu sein. 'x & 1' und' x% 2' sind 100% identisch für unsigned Operanden, also ist es nur eine Frage der Präferenz. –
@R .: dann ''0' + x% 2'. Die Idee war, Klammern zu entfernen. – ruslik
- 1. NSMutableArray. Was ist der schnellste Weg, um es in eine einfache ole C-Array zu konvertieren
- 2. Was ist der schnellste Weg, float nach int auf x86 zu konvertieren?
- 3. Konvertieren String-Darstellung von Binärzahl zu Int in C#
- 4. Was ist der schnellste Weg, um eine Datenzeile zu erfassen?
- 5. Was ist der schnellste Weg, um eine React App in React Native zu konvertieren?
- 6. Was ist der schnellste Weg zu überprüfen, ob eine Website in Perl oder C ist?
- 7. Was ist der schnellste Weg, um eine JSON-Zeichenfolge in eine SQLite-Tabelle zu analysieren?
- 8. Was ist der schnellste Weg, um eine Matrix in eine Textdatei in Octave zu schreiben?
- 9. Schnellste Möglichkeit, int int int in UInt32 zu konvertieren?
- 10. Was ist der schnellste Weg, um eine bestehende Vb6.0 win-basierte Anwendung in eine C# win-basierte konvertieren?
- 11. Was ist der schnellste Weg zu HTTP GET in Python?
- 12. Der schnellste Weg zu dem einzelnen Bytes in einer int
- 13. Binäre Darstellung einer Zahl in C
- 14. Was ist der schnellste Weg, um Daten in eine neue CitusDB-Instanz zu laden?
- 15. Was ist der schnellste Weg, um eine ganze Datei in einem String in Scala zu lesen?
- 16. Was ist der schnellste Weg, um eine große Liste in Python 2.7 zu speichern/zu laden?
- 17. Was ist der schnellste Weg, Daten von ArrayList zu filtern?
- 18. Was ist der schnellste Weg in C#, ein Muster in einer Gruppe von Dateien zu finden?
- 19. Was ist der schnellste Weg, um eine DataTable in SQL Server zu bekommen?
- 20. Was ist der schnellste Weg, um zu rehasen?
- 21. Was ist der beste Weg, um einen Int in einen String in Julia zu konvertieren?
- 22. Ist perl der schnellste Weg, um eine Hochleistungsseite zu schreiben?
- 23. C++: Was ist der schnellste Weg ist, eine geordnete Tabelle von IP-Adresse
- 24. Was ist der beste Weg, eine Sprache neu zu lernen?
- 25. In C++, was ist der schnellste Weg zu sagen, ob zwei Zeichenketten oder Binärdateien unterschiedlich sind?
- 26. Was ist der richtige Weg, um eine json.RawMessage in eine Struktur zu konvertieren?
- 27. Was ist der pythonischste Weg, um eine gültige JSON-Datei in eine Zeichenfolge zu konvertieren?
- 28. Konvertieren von Binärzeichenfolge in Int in C
- 29. Was ist der schnellste Weg, um eine Datei in Zend Studio für Eclipse zu finden?
- 30. Was ist der schnellste Weg, eine große CSV-Datei mit Python in MSSQL zu laden?
Dies ist nicht klar. Ein int * ist * bit-adressierbar. Meinst du das Bitmuster "ausdrucken"? – egrunin
Können Sie genauer angeben, was Sie unter "Bitdarstellung" verstehen? – nmichaels
Ich denke, er meint die binäre Darstellung. –