質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • C

    3711questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

ポインタが指す2バイトのメモリの数がどうしてそうなるのか教えて!

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 315

sanchu52

score 140

```どうして計算するのですか、教えてください

ポインタ~データのメモリ上の場所を示すアドレスをデータとして扱ったもの(リストデータ)

例 メモリアドレスが8ビットの場合 メモリアドレス109でその値が97(ポインタ)を指し

98,99で2バイト整数データを表しています。

97(次のポインタ),98,99で1セット(第0要素)で2バイト整数データ27861とあります。

97(次のポインタ)はメモリアドレス105を指し

106,107で2バイト整数データを表しています。

105(次のポインタ),106,107で1セット(第1要素)で2バイト整数データ44245とあります。

メモリ上のリストの配置例 メモリアドレス(いちばん左の数字)

109 :01100001    // その値が97(ポインタ)を指しています」

108 :01001011

107 :11010101        //ポイントされている2バイト整数データ

106 :10101100   //ポイントされている2バイト整数データ

105 :00001111   //次のポインタ値(15)

104 :10001010

103 : 11010101

102 : 11010101

101 : 01101100

100 : 11010101

99  : 11010101  //ポイントされている2バイト整数データ

98  : 01101100  //ポイントされている2バイト整数データ

97  ; 01101001  // 次のポインタ値(105)

96  : 11010101

コード ``

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • sanchu52

    2017/10/04 21:38

    すみません。記載のURLを見ていただいて回答をおねがいします。うまくコピーできないので。

    キャンセル

  • scsi

    2017/10/04 21:58

    テラテイルだけで完結するように質問してください

    キャンセル

  • archiver

    2017/10/04 23:15

    記載のURLってなんですか?何も書いてありませんよ。

    キャンセル

回答 3

checkベストアンサー

0

106番地: 10101100(bin) → 172
107番地: 11010101(bin) → 213
172 x 256 + 213 = 44245

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/05 08:15

    ありがとうございます。解りにくい質問でごめんなさい。全部つないだ値ですね。
    172の1桁目が256になっているということですよね。あと質問も修正しておきました。

    キャンセル

  • 2017/10/05 08:59

    1byteで0~255を表現できる。それより大きくなったら上位byteに桁上げせんならん。
    なので106番地の値を256倍しています。
    ※ どうやら上位byte/下位byteの順で並んでいるのでしょう。

    キャンセル

  • 2017/10/06 10:15

    ありがとうございます。リストのサイトを見ていて分からなかったので、そのまま先に行くのは勉強にならないので、すっきりして助かりました。構造体をリストで作ろうとして苦戦しています。

    キャンセル

0

解決済みですが補足まで記載します。
複数バイトから構成される値をどのように計算するかは、処理系の実装にもよります。
リトルエンディアン、ビッグエンディアンといった用語を調べられるとよいかと思います。

エンディアン - Wikipedia

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/06 10:17

    助言ありがとうございます。

    キャンセル

-4

回答します。

ドラえも「ん」

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    [C] ポインタのキャスト

    NULLの定義が ((void*)0) となっているのですが、数字をvoid*にキャストするとなにを表してるのですか?

  • 受付中

    C言語のポインタが難解とされる理由

    プログラミングC言語の学習者にとって、ポインタ(pointer)の理解は大きなハードルと言われています。 例えば「C言語 ポインタ」だけを専門に扱う入門書籍は、これまでにも大量に刊

  • 解決済

    p *p違いーポインタ

    intへのポインタ型 ①でintへのポインタ型で変数pを定義する。 ②でint型の変数xに20をいれる。 ③変数pにxのアドレスをいれる。 ④変数pの値を出力する p と*pの明確

  • 解決済

    char *, char**, char***の違い

    とても疑問に思っていることがあります。 ウェブサイトでCharについて調べていると、"char * * "や"char* * *"と記載してあるコードがありました。 自分な

  • 解決済

    MFCのAPI GetProfileBinaryが正しくしようできません。

    MFCのAPIのGetProfileBinaryが正しく使用できないため、ご教授いただきたいです。 char型配列に格納しているバイナリデータをWriteProfileBin

  • 解決済

    C言語のポインタについて

    1、C言語のポインタについて以下のように書くとエラーが出る理由をおしえてください。 int *w; *w = 5; 2、なぜアドレスで初期化しないといけないんですか??

  • 解決済

    c言語のint型のポインタサイズ

    C言語を勉強しています。 ポインタの勉強の中でポインタのサイズを表示させるコードを作って実行したところ、int型が8byteと表示されす。 int型は4byteと表示されるはずなの

  • 解決済

    cifa10のバイナリデータ形式について

    cifar10はpythonバージョンとバイナリデータ版のファイルがダウンロードできます。 バイナリデータの形式は <1 x label><3072 x pixel> ...

同じタグがついた質問を見る

  • C

    3711questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。