アフィリエイト広告を利用しています

広告

posted by fanblog

2018年04月07日

《その356》エンディアン


 リトルエンディアン・ビッグエンディアン

 double型の内部表現では 64ビットが使われています。
 前回《355》、double型データの 64ビットを、8ビットずつ順に読み取って、8個のchar型データを作成し、そのビットの並びを文字列に変換しました。そして、その8個のchar型データ(8ビット)をつなぎ合わせて、double型データの並びを表す文字列を作りましたが、
その際の、char型データ文字列のつなぎ方は、処理系に依存します。

 前回《355》の例でいうと、8バイトのdouble型データが、下位バイトが低アドレス側に配置される形式で格納されているのか、その逆であるのかが、処理系に依存するということです。

 ・下位バイトが低アドレスをもつ方式は リトルエンディアン
 ・下位バイトが高アドレスをもつ方式は ビッグエンディアン
と呼ばれています。

 次のプログラムは、自分の使っている処理系が、そのどちらなのかを調べるためのものです。この出力結果から、リトルエンディアンであることがわかりました。


#include <iomanip>
#include <iostream>
using namespace std;

int main() {
const unsigned long bits
= numeric_limits<unsigned char>::digits;

const int n = sizeof(int) / sizeof(char);

int x = 0x11223344;
cout << hex << showbase;
cout << x << " の格納状況\n\n";

char* p = (char*)&x;
cout << "アドレス  値\n";
for (int i = 0; i < n; i++) {
cout << noshowbase << setw(8)
<< setfill('0')
<< reinterpret_cast<int>((p + i))
<< " ";
cout << showbase
<< static_cast<int>(*(p + i))
<< '\n';
}
}

h12_005603.png


この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/7523312
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


検索
<< 2018年08月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
プロフィール
こうすけさんの画像
こうすけ

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


×

この広告は30日以上新しい記事の更新がないブログに表示されております。