搜尋

首頁  >  問答  >  主體

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

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

高洛峰高洛峰2802 天前1655

全部回覆(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
    char佔一位元組
    32位元int佔四位元組

    回覆
    0
  • 高洛峰

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

    '1'【char】和1【int】是不一樣的
    因為他們在二進制中的表示的方法不同
    '1' =》00110001【char是一字節,八位,會有特殊意義,例如可以代表符號什麼的】
    1 =》00000000000000000000000000000001【int是4字節,32位,只用來代表數字】

    回覆
    0
  • 黄舟

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

    和樓上的想法基本上差不多。
    首先這是兩個概念,在我看來,一個表示存儲,而另一個表示展示。
    例如:我們都知道boolean類型,相同的值,在某些情況下,可以表示為1、0,也可以表示為true、false。

    樓主的意識迷思在於概念中的錯誤。
    首先我們來分析下樓主的邏輯,再找出其中的錯誤:
    ∵ ① int = 4 位元組;② Ascll裡,1數字= 1位元組∴ int = 4 數字從而推導出 最多儲存4位元數字。

    我們可以看出,條件②是錯誤,所以得到的答案是錯誤的
    分析:
    1數字 = 1位元組,那麼1位元組 = 1 數字麼?
    我們可以說,在某些情況下是相等的, 就是在 256 進制下,而樓主卻用10進制來套256進制,所以錯了
    為什麼是256進制?是因為1位元組可以表示0-255之間的任意數值,所以 int 最多儲存4位 256位元進位的數字

    綜上所述,樓主的話在某些情況下是對的,但需要加一個前提,就是 256 進制的數字

    回覆
    0
  • 大家讲道理

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

    ascii裡面是用數字表達字串的,而數字存到內存中是在ascii的前面一個級別,你可以簡單的這樣理解:
    內存(0和1)=>數字(通常也可以直接為其他進制)=>漢字或字母(各種進制所表達的最終展示)

    他們不是一個等級的概念。

    回覆
    0
  • 大家讲道理

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

    簡單的說就是:
    前者總共有32個格子,每個格子可以有兩種情況,
    後者總共只有4個格子,每個格子有十個情況(0到9),
    一個是2的32次方,一個是10的4次方,你把底數和冪數都換了,結果一定不一樣。
    前者的其實也就是電腦裡的二進制,後者的思維變成了我們所日常使用的十進制。

    具體點說就是:
    ascii碼中包含256個字符,包括數字和英文字母、符號等,數字只佔其中的10個(0到9)。
    那為什麼ascii可以表示那麼多字元呢?
    你應該知道的(不知道就沒辦法了),一個ascii碼佔一個字節,而一個字節有八個比特位。
    每個位元位只有兩種情況,0和1,那麼8個位元組組合起來,就應該是:
    2 X 2 X 2 X 2 X 2 X 2 X 2 X 2 = 2的8次方= 256
    也就是8個位元位元總共能表示256種情況,如果把這256種情況分別全用來表示數字的話,就可以表示0到255這256個數字。

    好,這個如果你理解了,那麼理解int就容易了,int有4個字節,這是前提你也知道。
    前面解釋了,一個位元組可以表示256種情況,那麼4個位元組依照前面的演算法就為:
    256 X 256 X 256 X 256 = 2的8次方X 2的8次方X 2的8次方X 2的8次方= 4 294 967 296
    也就是4個位元組可以表示4 294 967 296 種情況,如果一種情況用來表示一個數字,那麼就可以用來表示0到4 294 967 295 了。

    你前後屬於偷換概念了,你後面把問題變成了:
    10 10 10 * 10 = 10 的4次方 = 10000
    結果當然只能表示4位數了。

    回覆
    0
  • 巴扎黑

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

    感覺好傻的問題。 。 。 ,,位元組和儲存幾位數肯定不是兩個概念啦

    回覆
    0
  • 取消回覆