データストレージ

1.メモリ内の形状ストレージ

元のコード、逆コード、補完コード

整数は2の補数形式でメモリに格納されます。
符号付き整数の場合、2進数の最上位ビットは符号ビットを表し、0は正の数を表し、1
は元のコード、逆コード、および負の数の補数コード間の変換を表します。
正の整数
オリジナル、リバース、コンプリメントは同じです。
負の整数
元のコードの符号ビットは変更されず、他のビットはビット反転されて逆コードを取得し、逆コード
は1ずつ加算されて補完コードになります。

2.型変換

1.暗黙の型変換

タイプよりも低いものintは、操作の実行時にタイプに変換する必要がありますintこれは整数拡張
と呼ばれます。変換が必要なタイプ
char
unsigned char
signed char
short
unsignedshort

C言語標準では、charそれがsignedまたはunsignedintであるかどうかは、完全にコンパイラー次第です
char符号付き整数型の場合、それが表す値の範囲は==-128〜127 ==
符号なし整数型の場合、それが表す値の範囲は次のようになります。0〜255
これはサインですchar127 + 1が-128になると、-128〜127の間に円が形成されます

短い署名されたタイプであり、unsigned short
あなたが理解するのを助けるために以下のコードを見てください

int main()
{
    
    
	char a = 0xb2;
	整型提升为0xffffffb2
	short b = 0xb200;
	整型提升为0xffffb200
	int c = 0xb2000000;
	不需要提升
	if (a == 0xb2)
		printf("a\n");
	if (b == 0xb200)
		printf("b\n");
	if (c == 0xb2000000)
		printf("c\n");
	return 0;
}

ここに画像の説明を挿入

2.算術変換

複数の数値を一緒に演算する場合、これらの数値の型が異なる場合は、同じ型に変更して演算する必要があります。これが一般的な算術変換です。
これらのタイプは高から低にソートされます
long double
double
float
unsigned long int
long int
unsigned int
int

算術変換には意味があります。高精度を低精度に変換すると、一部のデータが失われます。

3.ビッグエンディアンとスモールエンディアンのバイトオーダーの導入と判断

注:バイト単位で保存
ビッグエンディアンストレージ:データの下位ビットがアドレスに存在します高いデータの上位ビットはアドレスに格納されます低い場所
リトルエンディアンのバイトオーダーストレージ:データの下位ビットがアドレスに存在します低いデータの上位ビットはアドレスに格納されます高い場所。
ここに画像の説明を挿入
実装をプログラムしてください:あなたのマシンがどのストレージ方法であるかを決定してください

int panduan()
{
    
    
    int i = 1;
    return *(char*)&i;
}
int main()
{
    
    
    int ret=panduan();
    if (ret == 1)
        printf("小端\n");
    else
        printf("大端\n");
    return 0;
}

4.メモリ内の浮動小数点型のストレージ分析

浮動小数点型のメモリへの格納は整数型とはまったく異なります
.32ビット浮動小数点数の場合、最初のビットは符号ビット(Sで表される)表し、次の8ビットは指数ビット( E)で表され残りはsのビットが重要なビット(Mで表される)を表します
。S:正の数の場合は0、負の数の場合は-1
E:指数プラス127ビット=その格納番号、およびこれらの8ビットは符号なし数値を表しますM:その範囲は1〜2です。たとえば
、格納時に1を格納する必要はなく、小数点以下の数値を格納する必要はありません。
ここに画像の説明を挿入

	float i=6.5;
	二进制为110.1   1.101 *2^2
	s为0
	E为2+127=129
	M为101   后面位用0进行填充
	0 10000001 10100000000000000000000
	16进制进行表示
	0x40d00000

コンピュータ操作の結果を見てみましょう、私
ここに画像の説明を挿入
は誰もがそれを理解する必要があると信じています!
ここで注意すべき点がいくつかあります
。1。Eがすべて0の場合、指数ビットは1-127(1-1023(これは64ビット))であり、最上位ビットMは1を加算する必要はありません。 ±0に非常に近い数値。
2. Eがすべて1の場合、これは非常に大きな数、±無限大です。
これらの2つの注意点に加えて、それを保管する方法、それを取り出す方法。
64ビット浮動小数点型の場合、符号ビットの後の11ビットは指数ビットに加えて1023、残りは32ビット浮動小数点型の説明に似ています。

福祉:あなたが勉強する司教

ペンギンのスカート:720429262

おすすめ

転載: blog.csdn.net/m0_60598323/article/details/123146769