Drucken des Binärwertes einer Zahl in clojure

7

Wir können die Zahl 12 als 2r001100 in clojure darstellen.

Gibt es eine eingebaute Funktion, um 2r001100 zu drucken, wenn die Zahl 12 angegeben wird?

    
zcaudate 30.01.2014, 05:46
quelle

5 Antworten

11

Siehe cl-format

%Vor%     
edbond 30.01.2014, 07:39
quelle
13

java.lang.Integer / toString werden Zahlen mit beliebiger Radix gedruckt:

%Vor%     
jbouwman 27.10.2015 19:38
quelle
7

Diese Funktionen generieren und drucken Strings mit java.util.Formatter .

Aber sie tun nicht binär, also ist das Beste, was ich mir vorstellen kann:

%Vor%     
Alister Lee 30.01.2014 06:50
quelle
3

Alle diese Antworten sind gut, aber beide unterstützen kein Zweier-Komplement für negative Zahlen (cl-Format) oder drucken nicht die richtige Anzahl von Bits aus, basierend auf der Breite der Daten selbst (z. B. Aufruf von Integer / toBinaryString oder Integer / toString auf einem Byte wird nicht das tun, was Sie wollen, besonders für negative Zahlen).

Hier ist eine Lösung, die die genauen Bits der zugrunde liegenden Daten korrekt ausgibt:

%Vor%     
KingMob 04.05.2017 19:43
quelle
0

Test der Extreme hier mit (bit-shift-left 1 63) oder 1000000000000000000000000000000000000000000000000000000000000000 .

Die angegebene cl-format -Lösung gibt mir einen Integer-Überlauf.

Integer/toBinaryString gibt mir Value out of range for int: -9223372036854775808 .

Aber Long/toBinaryString gibt mir die Zeichenfolge, die ich erwartet habe.

    
David Meister 06.08.2016 05:12
quelle

Tags und Links