31日間の高度なC言語-2、データストレージ:浮動小数点数

1、フロート、ダブルメモリ

デバッグコード:

#include<stdio.h>
int main() {
    
    
	float a = 5.0f;
	double b = 5.0;

	return 0;
}

デバッグ結果:

浮く:

ここに画像の説明を挿入

ダブル:

ここに画像の説明を挿入

2.2進数の小数

0.1は2の-1乗を表します。つまり、
0.50.01は0.25
を表します。0.75の場合は0.11

2の累乗を正確に組み合わせることができないため、一部の値を正確に表すことができません。

3.IEEE754標準

表現:バイナリ科学的記数法

符号ビットS:0が正で1が負。
有効数字M:ゼロ以外の値で始まる左から右へのすべての数字。
桁E:小数点と最初の桁の間の距離。

例:9.0、1001ポイント0000。

S:0
M:1.001
E:3

ストレージ:32ビット浮動小数点

1 S、8 E、および残りの23M。
ここに画像の説明を挿入

ストレージ:64ビット浮動小数点

1 S、11 E、および残りの52M。

ここに画像の説明を挿入

中小企業

S:1ビット、0または1。
手つかず。

M:8桁または11桁。
常に1から始まるので、取り出したら取り外して追加してください。

E:符号なし、23ビットまたは52ビット。
符号付きの数値を表すには、127または1023を追加します。

4、5.0のフロート

101.0

S:0
M:101、1を削除して:01になり、次にすべての0を追加
E:2、127を追加して129、つまり10000001になります

0
1000 0001
0100 0000 0000 0000 0000 000
=》
0100 0000 1010 0000 0000 0000 0000 0000

16進変換:https
://www.osgeo.cn/app/s1653 2は
16:40 a0 00 00になります。これは、ケースとまったく同じです。

5、5.0のダブル

101.0

S:0
M:101、1を削除して:01になり、次にすべての0を追加します
E:2、1023を追加して1025になります。これは10000000001です。

0
10000000001
0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
=》
0100 0000 0001 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

2〜16:
40 14 00 00
00 000000
はケースとまったく同じです。

おすすめ

転載: blog.csdn.net/qq_37284843/article/details/124467023