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:
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)
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
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
Mit der obigen Formel erhalten wir:
(-1)**0 * (1 + 0.0000....001) * 2**(0 - 1022) = 1.0 * 2^-1022 = 4.9406564584124654e-324
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
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!