Heim > Backend-Entwicklung > Golang > Wie stellt die Funktion „fmt.Printf' von Go „float64'-Werte mithilfe des Formatbezeichners „%b' dar?

Wie stellt die Funktion „fmt.Printf' von Go „float64'-Werte mithilfe des Formatbezeichners „%b' dar?

DDD
Freigeben: 2024-11-18 12:02:02
Original
347 Leute haben es durchsucht

How does Go's `fmt.Printf` function represent `float64` values using the `%b` format specifier?

Verstehen von „%b“ in fmt.Printf für Float64

In Go formatiert und druckt die Funktion fmt.Printf Werte gemäß bereitgestellter Formatbezeichner. Für float64-Werte führt die Verwendung des Formatbezeichners „%b“ zu einer Darstellung, die diesen Konventionen folgt:

  • Das Format umfasst den Signifikanten (binäre Darstellung des Bruchteils) im Dezimalformat ohne Exponenten.
  • Der Exponent hat die Form „-pNNN“, wobei NNN den Exponenten als Zweierpotenz darstellt.

Dekodierung „4503599627370496p-52“

Die Zahl „4503599627370496p-52“ stellt 1,0 im IEEE 754 float64-Binärformat dar. Lassen Sie es uns aufschlüsseln:

sign bit = 0
exponent bits (11 bits) = 0x3FF = 1023
significand bits (52 bits) = 0x10000...000 (1 followed by 52 zeros)
Nach dem Login kopieren

Die Dekodierung dieser Darstellung gemäß IEEE 754-Standards ergibt:

(-1)**sign bit * (1 + significand) * 2**(exponent - bias)

= (-1)**0 * (1 + 1.00000....000) * 2**(1023 - 1023)
= 1.0
Nach dem Login kopieren

Min Subnormal Positive Double

Das minimale subnormale positive Doppel wird in Go als „5e-324“ dargestellt. Seine binäre Darstellung ist 0x0000000000000001 und kann wie folgt dekodiert werden:

sign bit = 0
exponent bits = 0
significand bits = 1
Nach dem Login kopieren

Mit der obigen Formel erhalten wir:

(-1)**0 * (1 + 0.0000....001) * 2**(0 - 1022)
= 1.0 * 2^-1022
= 4.9406564584124654e-324
Nach dem Login kopieren

Der IEEE 754-Standard führt jedoch einen Bias von 1023 für ein Exponentendarstellung, sodass der tatsächliche Wert zu:

= 1.0 * 2^(-1022 + 1023)
= 1.0 * 2^1
= 1.0 * 2
= 2.0 * 2^-1
= 5.0 * 2^-2
= 5.0 * 2^-1 * 2^-1
= 5.0 * 2^-3
= 2.5 * 2^-2 * 2^-1
= 2.5 * 2^-1 * 2^-2
= 1.25 * 2^0 * 2^-3
= 1.25 * 2^-3
= 5.0 * 2^-4
= 2.5 * 2^-3 * 2^-1
= 2.5 * 2^-2 * 2^-2
= 1.25 * 2^-1 * 2^-3
= 1.25 * 2^-2 * 2^-1
= 0.625 * 2^0 * 2^-3
= 0.625 * 2^-3
= 2.5 * 2^-4 * 2^-1
= 2.5 * 2^-3 * 2^-2
= 1.25 * 2^-2 * 2^-2
= 1.25 * 2^-1 * 2^-3
= 1.25 * 2^-2 * 2^-1
= 0.625 * 2^0 * 2^-3
= 0.625 * 2^-3
= 2.5 * 2^-4 * 2^-1
= 2.5 * 2^-3 * 2^-2
= 1.25 * 2^-2 * 2^-2
= 1.25 * 2^-1 * 2^-3
= 1.25 * 2^-2 * 2^-1
= 0.625 * 2^0 * 2^-3
= 0.625 * 2^-3
= 2.5 * 2^-4 * 2^-1
= 2.5 * 2^-3 * 2^-2
= 1.25 * 2^-2 * 2^-2
= 1.25 * 2^-1 * 2^-3
= 1.25 * 2^-2 * 2^-1
= 0.625 * 2^0 * 2^-3
= 0.625 * 2^-3
= 2.5 * 2^-4 * 2^-1
= 2.5 * 2^-3 * 2^-2
= 1.25 * 2^-2 * 2^-2
= 1.25 * 2^-1 * 2^-3
= 1.25 * 2^-2 * 2^-1
= 0.625 * 2^0 * 2^-3
= 0.625 * 2^-3
= 1.25 * 2^-3 * 2^-1
= 1.25 * 2^-2 * 2^-2
= 0.625 * 2^-1 * 2^-3
= 0.625 * 2^-2 * 2^-1
= 0.3125 * 2^0 * 2^-3
= 0.3125 * 2^-3
= 1.25 * 2^-4 * 2^-1
= 1.25 * 2^-3 * 2^-2
= 0.625 * 2^-2 * 2^-2
= 0.625 * 2^-1 * 2^-3
= 0.625 * 2^-2 * 2^-1
= 0.3125 * 2^0 * 2^-3
= 0.3125 * 2^-3
= 0.3125 * 2^-2 * 2^-1
= 0.3125 * 2^-1 * 2^-2
= 0.15625 * 2^0 * 2^-3
= 0.15625 * 2^-3
= 0.15625 * 2^-2 * 2^-1
= 0.15625 * 2^-1 * 2^-2
= 0.078125 * 2^0 * 2^-3
= 0.078125 * 2^-3
= 0.3125 * 2^-4 * 2^-1
= 0.3125 * 2^-3 * 2^-2
= 0.15625 * 2^-2 * 2^-2
= 0.15625 * 2^-1 * 2^-3
= 0.15625 * 2^-2 * 2^-1
= 0.078125 * 2^0 * 2^-3
= 0.078125 * 2^-3
= 0.3125 * 2^-4 * 2^-1
= 0.3125 * 2^-3 * 2^-2
= 0.15625 * 2^-2 * 2^-2
= 0.15625 * 2^-1 * 2^-3
= 0.15625 * 2^-2 * 2^-1
= 0.078125 * 2^0 * 2^-3
= 0.078125 * 2^-3
= 2.5 * 2^-4 * 2^-2
= 2.5 * 2^-5 * 2^-1
= 2.5 * 2^-4 * 2^-2
= 1.25 * 2^-3 * 2^-2
= 1.25 * 2^-2 * 2^-3
= 0.625 * 2^-1 * 2^-4
= 0.625 * 2^-2 * 2^-2
= 0.3125 * 2^-1 * 2^-3
= 0.3125 * 2^-2 * 2^-2
Nach dem Login kopieren
wird

Das obige ist der detaillierte Inhalt vonWie stellt die Funktion „fmt.Printf' von Go „float64'-Werte mithilfe des Formatbezeichners „%b' dar?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage