ホームページ > バックエンド開発 > Golang > Go の `fmt.Printf` では、`%b` 形式指定子はどのように float64 値を表しますか?

Go の `fmt.Printf` では、`%b` 形式指定子はどのように float64 値を表しますか?

Patricia Arquette
リリース: 2024-12-01 06:03:12
オリジナル
536 人が閲覧しました

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

float64 の "%b" について

fmt.Printf の float64 値の "%b" 形式指定子は浮動小数点を表します2 の補数の指数を使用した 2 進科学表記の数値。この表記では、数値は仮数 (仮数) に 2 のべき乗を乗じて指数化したものとして表され、どちらもバイナリ形式で表されます。

たとえば、 fmt.Printf("% bn", 1.0) が実行されると、出力 4503599627370496p-52 が生成されます。これは次のことを示します:

  • 仮数: 4503599627370496
  • 指数: -52

デコードすると、仮数

仮数 (または仮数) は 53 ビットの浮動小数点数です。 2 進数では、次のように表すことができます。

0.11111111111110000000000000000000000000000000000000000000000000
ログイン後にコピー

この 2 進数の仮数部を 10 進数に変換するには、2^(1 - 指数) を掛けます。

この場合、指数はは -52 であるため、

0.11111111111110000000000000000000000000000000000000000000000000 * 2^(1 - (-52))
= 0.11111111111110000000000000000000000000000000000000000000000000 * 2^(53)
= 1.0
ログイン後にコピー

したがって、仮数部は値を表します1.

指数のデコード

指数は 11 ビットの符号付き整数です。浮動小数点数の標準 IEEE 754 バイナリ表現では、偏りのある指数が使用されます。正の値は実際の指数を表し、負の値は非正規数を示します。

指数 -52 については、偏りのない指数を計算します。 exponent:

Unbiased exponent = Biased exponent - 1023
= -52 - 1023
= -1075
ログイン後にコピー

この負の値は非正規数を示します。非正規数は、正規化された指数範囲を使用して表現するには小さすぎる数値を表すために使用されます。

Float64 値の計算

仮数部と指数を組み合わせると、 float64を計算できるvalue:

value = significand * 2^(exponent)
= 1.0 * 2^(-1075)
= 5e-324
ログイン後にコピー

最小非正規正 Double について

最小非正規正 Double 値は、1.0 未満の最小の正 Double 値です。 16 進表現は 0x0000000000000001 です。

この 16 進値をバイナリに変換します:

0000000000000000000000000000000000000000000000000000000000000001
ログイン後にコピー

このバイナリ表現は次のように分解できます:

  • 符号ビット: 0 (正)
  • 指数: -1022 (非正規指数)
  • 仮数: 1.0

前と同じ計算を使用:

value = significand * 2^(exponent)
= 1.0 * 2^(-1022)
= 5e-324
ログイン後にコピー

したがって、最小の非正規正の double 値は次のようになります。 5e-324.

以上がGo の `fmt.Printf` では、`%b` 形式指定子はどのように float64 値を表しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート