java - int占4字节,一数占一字符,为什么int能表示5位以上的数字?
高洛峰
高洛峰 2017-04-18 09:26:53
0
16
1648

我知道这个问题~有点无厘头和傻乎乎。还是想请人解答一下~
----------可能目前脑子正处于抽风阶段----------
首先,我知道int占4个字节,包含正负2的31次方内的数字,也就是基本可以表示10位数字。
那么根据Ascll里,一个数字占用一个字节的规则来思考。
我让int按照这种规则来储存数字,是不是应该只能储存最多4位数字???
还请明白人~指出我这样思考的错误点在哪里?或者告知正确的解答方式~。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(16)
刘奇

文字と数値の表現方法が異なります。ASCIIコードの数字は数値ではなく、エンコーディングによって表現された文字です。したがって、各数字は7ビットを占有します(拡張ASCIIコードは8ビットを占有します)。 。たとえば、12 は、ASCII コードでは 0110001 0110010 (1 文字または 2 文字の数字からなる文字列を表し、12 の大きさの意味はありません) と表現され、int では 00000000 00000000 00000000 00001010 と表現されます。値 12 の整数を表します。1 と 2 は割り切れません。 。つまり、コンピュータ内では数値と​​文字の表現方法が異なり、intはASCIIコードで表現されません

いいねを押す +0
左手右手慢动作

ASCII は数値の表現ではなく、文字の表現を定義します。コンピューターが数値と文字列を格納する方法は異なります。

いいねを押す +0
巴扎黑

コンピュータが実際に格納するのは 2 進数であり、1 バイトは 8 ビットで表現されます。最大値は 2 の 8 乗 - 1 です。同様に、4 バイトは 32 ビットです。表現できる最大値は2の32乗-1です。マイコンの原理を理解していれば分かります。同時に、最初のビットは通常、正と負を示す符号ビットであるため、0 が正、1 が負であるため、符号付き数は 2 の 31 乗 -1 になります。 int、long、double などの語長はコンパイラの規則です。たとえば、初期の 16 ビット マシンの int は 16 ビットで、最大値は 65535 です。最新の VS バージョンでは、int は 4 です。バイトと 32 ビット。
ASCII エンコーディングを見逃していました。ASCII コードは 1 文字を占め、上位 4 ビットと下位 4 ビットが表を形成していることがわかります。 256文字まで。 ASCII は実際には文字列です。

いいねを押す +0
刘奇

それは 2 つのことのように感じます。 int が 4 バイトを占めるという制限は、int が到達できる最大値です。 AscII では、数値が占めるスペースは 1 バイトであると規定されており、これは物理的なスペースであり、その数字が占めるスペースの量を表します。理論的には、このスペースは無限に大きくすることができ、ハードディスクが十分である限り、無限に長くすることができます。 int の 4 バイトは、宣言された値が占める領域を指します。宣言された値が特定の上限および下限 (プラスまたはマイナス 2 の 31 乗) に達すると、オーバーフローします。ハードドライブがどれほど大きくても、この制限は同一のマシン上では変わりません。こんな感じで理解していただけるでしょうか。

いいねを押す +0
伊谢尔伦

ascii 内の数字は、文字の角度である '1' を指します。角度が違うので全く間違えません。

いいねを押す +0
黄舟

ASCII はエンコード仕様であり、int はメモリ内で表されるストレージ タイプです。車の定員が 5 人であるのと同じように、それ以上の人が乗車すると交通警察が罰します。これは誰が乗っているのか、名前は何ですか、ID 番号は何ですか? これは ASCII によって規制されています。コード。

いいねを押す +0
刘奇

int = 4 ビット (bit) ではなく、4 バイト (Byte)

1 バイト = 8 ビット

1 ビット = 0 または 1

1バイト = 0-255


現実の 10 進法:
10 進数 1 桁 = 0-9
10 をすべて 1 に変換
同じことが 2 進法にも当てはまります
1 ビット = 0-1
フル1 を 1 に変換
int 0 のバイナリ表現は次のとおりです: 000000000000000000000000000000
+1 の結果は: 0000000000000000000000000000001
+1 の結果は: 0000000 000000 0000000000000000010
に +1 を加算した結果は: 000000000000000000000000000000100
と +1000: 0000000000000000000001111101011

いいねを押す +0
黄舟

1、2、12 は 2 つの異なる概念です。 1バイトは8ビットの2進数なので、intは2の31乗以内の数値を表現できます。たとえば、1212 は、ASCII で保存すると 1 2 1 2、int で保存すると 1,212 になります

いいねを押す +0
刘奇

int は char ではなく数値を格納します

いいねを押す +0
伊谢尔伦

1 バイトは 8 ビットです
4 バイトは 32 ビットです
つまり、int は 32 ビットです
ただし、int は符号付き整数です。
表現できる最大数は 31 1 です
つまり、2の31乗 - 1

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート