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

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

高洛峰
高洛峰

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

全員に返信(16)
Peter_Zhu

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

いいねを押す +0
小葫芦

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

いいねを押す +0
黄舟

基本的には上記のアイデアと同様です。
まず、これらは 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
大家讲道理

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

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

いいねを押す +0
大家讲道理

簡単に言うと、
前者には合計 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
巴扎黑

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

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