検索

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

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

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

高洛峰高洛峰2806日前1678

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

  • 天蓬老师

    天蓬老师2017-04-18 09:28:53

    ......
    「1」! = 1
    「2」! = 2
    「3」! = 3
    (1)10 = (1)2
    (2)10 = (10)2
    (3)10 = (11)2
    文字は 1 バイトを占めます
    32 ビットint は 4 バイトを占めます

    返事
    0
  • 高洛峰

    高洛峰2017-04-18 09:28:53

    '1'[char] と 1[int] は異なります
    バイナリでの表現方法が異なるため
    '1' =>00110001[char は 1 バイト、8 ビットです。特殊な値になります。つまり、たとえば、記号などを表すことができます]
    1 =》000000000000000000000000000000001 [int は 4 バイト、32 ビットで、数値を表すためにのみ使用されます]

    返事
    0
  • 黄舟

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

    基本的には上記のアイデアと同様です。
    まず、これらは 2 つの概念 であり、1 つは保管を意味し、もう 1 つはディスプレイを意味します。
    例: ブール型は誰でも知っていますが、場合によっては、同じ値が 1、0、または true または false として表現されることがあります。

    投稿者の誤解は概念的な誤りにあります。
    まず、投稿者のロジックを分析してエラーを見つけてみましょう:
    ∵ ① int = 4 バイト; ② Ascll では、1 つの数値 = 1 バイト ∴ int = 4 つの数値、したがって、int が最も多くのストア 4 であると推測されます。数字。

    条件②が間違っていることが分かりますので、得られた答えは間違っています
    分析:
    1 数値 = 1 バイト、すると 1 バイト = 1 数値?
    場合によっては、つまり 256 進数で等しいと言えますが、投稿者は 256 進数をカバーするために 10 進数を使用しているため、それは間違いです。
    なぜ 256 進数なのでしょうか? 1 バイトは 0 ~ 255 の任意の値を表すことができるため、int は 256 桁の数値のうち最大 4 桁を格納できます

    要約すると、投稿者の言っていることは場合によっては正しいですが、256 進数という前提条件を追加する必要があります

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:28:53

    ASCII は文字列を表現するために数値を使用します。数値は ASCII よりも前のレベルでメモリに保存されます。
    メモリ (0 と 1) => 数値 (通常は直接他の基数にすることもできます)。 ) => 漢字または文字 (さまざまな基数で表現される最終的な表示)

    それらは同じレベルにありません。

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:28:53

    簡単に言うと、
    前者には合計 32 個のグリッドがあり、各グリッドには 2 つの状況を含めることができます。
    後者には合計 4 つのグリッドしかなく、各グリッドには 10 個の状況 (0 ~ 9) があります。 ) ,
    1 つは 2 の 32 乗、もう 1 つは 10 の 4 乗です。底とべき乗の両方を変更すると、結果は必ず異なります。
    前者は実際にはコンピューターの 2 進法であり、後者の考え方は私たちが日常的に使用する 10 進法になります。

    具体的には:
    ASCII コードには、数字、英字、記号などを含む 256 文字が含まれています。数字はそのうち 10 文字 (0 ~ 9) のみを占めます。
    では、なぜ ASCII はこれほど多くの文字を表現できるのでしょうか?
    知っておくべきです (知らないなら仕方ありませんが)、ASCII コードは 1 バイトを占め、1 バイトは 8 ビットです。
    各ビットには 0 と 1 の 2 つの状況しかないため、8 ビットの組み合わせは次のようになります:
    2 X 2 X 2 X 2 X 2 X 2 X 2 X 2 = 8 of 2 Power = 256
    つまり、8 ビットで合計 256 個の状況を表すことができ、256 個の状況をすべて数値の表現に使用すると、0 から 255 までの 256 個の数値を表すことができます。

    これを理解していれば、int が 4 バイトであることは簡単に理解できるでしょう。これも前提条件です。
    前に説明したように、1 バイトは 256 の状況を表すことができるため、前のアルゴリズムによる 4 バイトは次のようになります:
    256 X 256 X 256 X 256 = 2 の 8 乗 X 2 の 8 乗 X 2 8乗 0~4 294 967 295を表します。

    あなたは前後で秘密裏に概念を変更しました。後で質問を次のように変更しました。

    10
    10 10 * 10 = 10 の 4 乗 = 10000 もちろん、結果は次のようになります。 4桁のみを表します。

    返事
    0
  • 巴扎黑

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

    愚かな質問のように感じます。 。 。 、、バイトと格納される桁数は、決して 2 つの異なる概念ではありません

    返事
    0
  • キャンセル返事