検索

ホームページ  >  に質問  >  本文

java - int占4字节,一数占一字符,为什么int能表示5位以上的数字?

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

高洛峰高洛峰2802日前1652

全員に返信(16)返信します

  • 怪我咯

    怪我咯2017-04-18 09:28:53

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

    返事
    0
  • ringa_lee

    ringa_lee2017-04-18 09:28:53

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

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:28:53

    コンピュータが実際に格納するのは 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
  • 怪我咯

    怪我咯2017-04-18 09:28:53

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

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:28:53

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

    返事
    0
  • 黄舟

    黄舟2017-04-18 09:28:53

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

    返事
    0
  • 怪我咯

    怪我咯2017-04-18 09:28:53

    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
  • 黄舟

    黄舟2017-04-18 09:28:53

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

    返事
    0
  • 怪我咯

    怪我咯2017-04-18 09:28:53

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

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:28:53

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

    返事
    0
  • キャンセル返事