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

我知道这个问题~有点无厘头和傻乎乎。还是想请人解答一下~
----------可能目前脑子正处于抽风阶段----------
首先,我知道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
                      最新のダウンロード
                      詳細>
                      ウェブエフェクト
                      公式サイト
                      サイト素材
                      フロントエンドテンプレート
                      私たちについて 免責事項 Sitemap
                      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!