アプリ版:「スタンプのみでお礼する」機能のリリースについて

unsigned int型をバイナリモードでファイルに書き込みした時、 そのバイト列がどうなっているのかを、「エンディアン」に関連して説明する。
また、int型をバイナリモードでファイルに書き込みした時、 そのバイト列がどうなっているのかを、「エンディアンと2の補数表現」に関連して説明する。この二つの問題について、ご教授ください。

A 回答 (2件)

①エンディアンとは、ビッグエンディアンとリトルエンディアンの2種類のデータの並び順のことです。

ミドルエンディアンというものもあります。
これは、ハードウエアやOSなどに依存していますが、一つのシステムで運用している限り、問題にはならず、意識する必要もないです。
②バイナリモードでのファイル書き込みの状態について
例えば、int型4バイトの1は16進で00-00-00-01ですが、ビッグエンディアンでは、大きい桁を左(先頭)から並べますから00-00-00-01ですが、
リトルエンディアンでは、小さい桁を左(先頭)から並べますから10-00-00-00となります。これは、ビット単位のリトルエンディアンですが、バイト単位のリトルエンディアンでは、バイトごとの小さい桁を左(先頭)から並べますから01-00-00-00となります。1バイトの中身はビッグエンディアンということです。実際にファイルの中身を調べるにはエディターを使いますから、エディターが1バイトを16進で表現するなら、どちらのリトルエンディアンでも、10-00-00-00となります。
③2の補数表現について
「2の補数」というものには疑義があります。通常、10の補数といった場合は、2と8、1と9、0と10というように足して10になるものを補数と言いますが、コンピュータ関係では、「2の補数」は、足して1になるものを指すことが多いです。つまり、0と1、1と0の2種類です。
00-00-00-01の補数は、FF-FF-FF-FEであり、10-00-00-00の補数は、EF-FF-FF-FFです。これは、数値で表すと、-2(サイン付きの場合)になります。1の補数は-2です。0の補数は-1です。ここから、1増えると補数は1減るという関係になります。なお、サインなしの場合は、4294967294になります。サインなしintの最大値は4294967295ですから、0の補数は4294967295。ここから、1増えると補数は1減るという関係になります。
    • good
    • 0

Wikipediaを読めば、大体説明がつけられるかと。


https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3 …
https://ja.wikipedia.org/wiki/2%E3%81%AE%E8%A3%9 …

上記説明で理解できなかったところがあったら、もうちょっと詳しく質問できるようになると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!