C言語をやっていて質問です。 char 1byte -128~127 int 4byte -2147483648~2147483647

プログラミング | C言語関連111閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

1

1人がナイス!しています

ThanksImg質問者からのお礼コメント

細かく詳しくご説明いただきありがとうございました。 理解出来ました。本当にありがとうございました。

お礼日時:2021/11/29 14:35

その他の回答(8件)

1

主に最近のCPUは、「2の補数表現」という表現形式で整数を表現しているためです。 詳しくは他の方の回答を見るか、「2の補数表現」を勉強してみて下さい。

1人がナイス!しています

1

元になるのは「2のn乗」という値。 nはビット数です。言わずもがなですが、1バイト=8ビットね。 それが「表現可能な『組み合わせ数』」で、unsignedの場合は(0から数え始めるので)『0~2のn乗-1』が「表現可能な範囲」になります。 そして、「2の補数」という表現方法で負数を表現する場合は、全体をマイナス方向に「2の(n-1)乗」分シフトさせることになるので、『-2の(n-1)乗~2の(n-1)乗-1』が「表現可能な範囲」になります。

1人がナイス!しています

1

詳細は皆さんの回答に譲りますが >int 4byte -2147483648~2147483647 こんな数字覚えても無駄ですね 暗記して便利なのはこれだけ 10bit = 1K ← 10bit = 1024 で、約千 20bit = 1M ← 約千 x 約千 で 約100万 30bit = 1G ← 約千 x 約100万で 、、、いくつだ?この値?10憶でいいのか?

1人がナイス!しています

1

(ike********さん) int型が4バイトとは限りません、環境やコンパイラに依存します 「2の補数」で検索!

1人がナイス!しています

1

4バイトなので、8×4=32ビットです。 32ビットで表せる数は、2^32=4294967296 です。 でも、半分をマイナスに1個を0に半分ー1をプラスに使うので 2で割って ー2147483648~2147483647 です。

1人がナイス!しています