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

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

高洛峰
高洛峰

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

répondre à tous(16)
Peter_Zhu

............
'1' ! = 1
'2'! = 2
'3' ! = 3
(1)10 = (1)2
(2)10 = (10)2
(3)10 = (11)2
le caractère occupe un octet
32 bits int occupe quatre octets

小葫芦

'1'[char] et 1[int] sont différents
Parce qu'ils sont exprimés de différentes manières en binaire
'1' =>00110001[char est un octet, huit bits, il aura un spécial ce qui signifie, par exemple, qu'il peut représenter des symboles ou quelque chose]
1 =》000000000000000000000000000000001 [int est de 4 octets, 32 bits, utilisé uniquement pour représenter des nombres]

黄舟

Essentiellement similaire à l'idée ci-dessus.
Tout d'abord, ce sont deux concepts À mon avis, l'un signifie stockage et l'autre signifie affichage.
Par exemple : nous connaissons tous le type booléen. La même valeur, dans certains cas, peut être exprimée par 1, 0, ou vrai ou faux.

Le malentendu de l’affiche réside dans l’erreur conceptuelle.
Tout d'abord, analysons la logique de l'affiche et découvrons les erreurs :
∵ ① int = 4 octets ; ② En Ascll, 1 nombre = 1 octet ∴ int = 4 nombres, déduisant ainsi que int est le plus Stocke 4 chiffres.

On voit que la condition ② est fausse, donc la réponse obtenue est fausse
Analyse :
1 chiffre = 1 octet, puis 1 octet = 1 chiffre ?
On peut dire qu'ils sont égaux dans certains cas, c'est à dire en base 256, mais l'affiche a utilisé la base 10 pour recouvrir la base 256, donc c'est faux
Pourquoi est-ce en base 256 ? Parce qu'1 octet peut représenter n'importe quelle valeur comprise entre 0 et 255, donc int peut stocker jusqu'à 4 chiffres de nombres à 256 chiffres

Pour résumer, ce que dit l'affiche est correct dans certains cas, mais il faut ajouter un prérequis, qui est un nombre de base 256

大家讲道理

ASCII utilise des nombres pour exprimer des chaînes, et les nombres sont stockés en mémoire à un niveau avant ASCII. Vous pouvez simplement le comprendre comme ceci :
Mémoire (0 et 1) => Les nombres (généralement aussi peuvent directement être d'autres bases. ) => Caractères ou lettres chinois (l'affichage final exprimé par diverses bases)

Ils ne sont pas au même niveau.

大家讲道理

Pour faire simple :
La première a un total de 32 grilles, chaque grille peut avoir deux situations,
La seconde n'a qu'un total de 4 grilles, et chaque grille a dix situations (0 à 9 ),
L'un est 2 élevé à la puissance 32, et l'autre est 10 élevé à la puissance 4. Si vous changez à la fois la base et la puissance, le résultat sera certainement différent.
Le premier est en fait le système binaire des ordinateurs, tandis que la pensée du second devient le système décimal que nous utilisons quotidiennement.

Pour être précis :
Le code ascii contient 256 caractères, dont des chiffres, des lettres anglaises, des symboles, etc. Les chiffres n'en représentent que 10 (0 à 9).
Alors pourquoi les ascii peuvent-ils représenter autant de caractères ?
Il faut savoir (si vous ne savez pas, vous n'y pouvez rien), un code ASCII occupe un octet, et un octet comporte huit bits.
Chaque bit n'a que deux situations, 0 et 1, donc la combinaison de 8 bits doit être :
2 X 2 X 2 X 2 X 2 X 2 X 2 X 2 = 8 sur 2 Puissance = 256
Autrement dit, 8 bits peuvent représenter un total de 256 situations. Si les 256 situations sont utilisées pour représenter des nombres, 256 nombres de 0 à 255 peuvent être représentés.

D'accord, si vous comprenez cela, alors il sera facile de comprendre que int a 4 octets. C'est une condition préalable que vous connaissez également.
Comme expliqué précédemment, un octet peut représenter 256 situations, donc 4 octets selon l'algorithme précédent sont :
256 X 256 X 256 X 256 = 2 à la puissance 8 X 2 à la puissance 8 X 2 à la 8ème puissance Représente 0 à 4 294 967 295.

Vous avez secrètement changé les concepts avant et après. Vous avez ensuite transformé la question en :

10
10 10 * 10 = 10 à la puissance 4 = 10000 Bien sûr, le résultat peut ne représentent que 4 chiffres.

巴扎黑

Cela semble être une question idiote. . . ,,Les octets et le nombre de chiffres stockés ne sont certainement pas deux concepts différents

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal