おまけのコーナー☆変数aに格納される数値データ情報、変数bに格納される数値データ情報はともにコンデンサーに電荷として蓄えられています。




             ☆おまけのコーナー☆


           変数aに格納される数値データ情報

           変数bに格納される数値データ情報 


ともにコンデンサーに電荷として蓄えられています。




ニーモ 「あー aとbがこうなってああなって・・・」


ソーラー 「うふふっ。 そ・ん・な・貴女に・・・」


ニーモ 「ええと・・」


ソーラー 「いかがでしょうか?


a=10;

b=20;

a=b;


これらの命令文は


まず

変数aに10を代入

変数bに20を代入

最後に

変数aに変数bが格納している値を代入せよ。という命令をコンピュータに


与えています。


わたしが得た情報によると実はコンピュータの中では


コンデンサーという電気をためる装置があって


a=10;

が行われた場合


変数aに対応するコンデンサーには


数値10に相当する電荷がたまるそうです。


b=20;

が行われた場合


変数bに対応するコンデンサーには


数値20に相当する電荷がたまるそうです。


つまり


コンピューターの中に


aというコンデンサー



bというコンデンサー


が別々にあるということです。


この


aに10に相当する電荷

bに20に相当する電荷



たまっている状態でコンピューターに


a=b;


つまり


aにbの値20を代入せよ。と命令をだすと


aに対応しているコンデンサーの中では


いまの10ほど電荷がたまっている状態から


bの20ほど電荷がたまっている状態に釣り合うように


電荷の量が調整されます(詳しくは後の解説をみてね)」


ニーモ 「へー」


妖精の羽がきらっときらめく。


ソーラー (うわっまぶしい。 でもきれいだなー。うっとり)


ニーモ 「それで、それで」


うれしそうにせかすニーモ。


ソーラー 「つまり


#include <stdio.h>


int main(void)

{

int a,b;


a=10;

b=20;


a=b;


printf("りんごは%d円です。\n",a);

return 0;

}


このプログラムを また表示しますが、


int a,b;


a=10;

b=20;


においてはまず


aというコンデンサーに電荷10をため


bというコンデンサーには電荷20をためますね。


この時点でaのコンデンサーの電荷量は10です。


そして


a=b;



aのコンデンサーの電荷量を 今もっている10から


bのもっている電荷量20まで


ひきあげなさい。


とコンピューターは命令されます。


そして

aの電荷量は20にひきあげられます


つまり


変数aに格納されている数値データは20になるわけです。


そして


printf("りんごは%d円です。\n",a);


を実行すると


りんごは20円です。


が表示されることになります


ニーモ 「変数aとbは電気(電荷)のいれもの(コンデンサー)で


a=b;



コンピュータに命令して


aとbの電荷の量を同じ高さに釣り合わせるか・・・ふふふ


わかりやすいーーー。


ソーラー、 あなた、 優しいのね。」


ソーラー 「いやー ま、まあまあかな?」






。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

実は


コンピューターのデータを蓄えるための


コンデンサーは


データを保存するために


電荷を貯えるのですが


1つのコンデンサーは


電荷をためる


電荷をためない


の2つのうちのどちらかの状態しかとることはできません。


ですので


1つのコンデンサーでは


今 蓄えている電荷が10だとして


2倍の電荷の20を貯えるということはできないのです。


??


では


どうやって


数値データ10

2倍の

数値データ20を


保存しているのかな?



aのint型の変数宣言


int a;


によって作製された変数aには


データを蓄えるために


32個のコンデンサー○が


コンピュータによってあたえられます。


int型の変数aも手厚い待遇に喜んでいます。


コンデンサーを〇


コンデンサーに電荷が蓄えられている状態を●


であらわすと


変数aのコンデンサーに電荷が蓄えられていない状態は


〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇


であらわされます


このとき


変数aには数値データ0が保存されていることになります。


変数aに


〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●


と電荷が貯えられているときは


変数aには数値データ1が保存されていることになります。


となると


変数aに


〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●●●●●●●●


と電荷が貯えられているときは


●が8個あるので


変数aには数値データ8が保存されていることになりそうなものですが


そうはなりません。


実は


変数aには数値データ255が保存されていることになります。


では


変数aには数値データ8が保存されているときは



どのように


電荷が貯えられているのかというと


〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇〇〇



変数aに


電荷が貯えられています


全く不思議ですね。


〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●


数値データ1が保存されている状態で



〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇〇〇



数値データ8が保存されている状態をあらわすなんて・・・


ど~なってるのでしょう(笑)


数値データを変数aに保存するとき


コップに水を注ぎ込むように


数値データの大きさに合わせて


コンデンサーに


電荷がたくわえられているわけではないのですね。


もう少し


int型の変数aにデータがどのように保存されているかを鑑賞すると


数値データ10は


〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇●〇


のように


電荷が保存されています


これも


〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●●●●●●●●●●


のように


●10個分ではありません。



数値データ20は


〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇●〇〇


のように


電荷が保存されています


このときも


〇〇〇〇〇〇〇〇〇〇〇〇●●●●●●●●●●●●●●●●●●●●


のように


●20個分ではありません。


そこで


int型の変数aに


数値データ10が


〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇●〇


のように保存されていて


int型の変数bに


数値データ20が


〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇●〇〇


のように保存されているとき


a=b;



変数aに変数bを代入したら


どのようなことがおこるのでしょうか?


何がおこるのでしょうか?


このときは


変数bに


数値データ20が貯えられているのと


同じ


○と●の配置の


〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇●〇●〇〇



変数aに割り当てられたコンデンサーに電荷が保存されることになります。


つまり


変数aに変数bを代入するということは


変数bに割り当てられたコンデンサーに電荷が貯えられた状態と


同じように


変数aに割り当てられたコンデンサーに電荷が貯えられるようにする


ということなのですね。


電荷が蓄えられていないコンデンサー〇

電荷が蓄えられているコンデンサー●の配置を


あわせることになるといえます。


なんだか


パズルみたいでおもしろいですね。


                   solarplexussより

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る