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

我知道这个问题~有点无厘头和傻乎乎。还是想请人解答一下~
----------可能目前脑子正处于抽风阶段----------
首先,我知道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바이트를 차지합니다

小葫芦

'1'[char]과 1[int]는 다릅니다
바이너리로 서로 다른 방식으로 표현하기 때문입니다
'1' =>00110001[char는 1바이트, 8비트, 특수문자를 갖습니다 예를 들어 기호 등을 나타낼 수 있음]
1 =》000000000000000000000000000000001 [int는 4바이트, 32비트이며 숫자를 나타내는 데에만 사용됩니다.]

黄舟

기본적으로 위의 아이디어와 유사합니다.
먼저 두 가지 개념이 있는데, 하나는 수납, 하나는 디스플레이라는 뜻인 것 같아요.
예: 우리 모두는 부울 유형을 알고 있습니다. 어떤 경우에는 동일한 값이 1, 0 또는 true 또는 false로 표현될 수 있습니다.

포스터의 오해는 개념상의 오류에 있습니다.
먼저 포스터의 논리를 분석하여 오류를 찾아보겠습니다.
∵ ① int = 4바이트; ② Ascll에서는 1개 숫자 = 1바이트 ∴ int = 4개 숫자이므로 int가 가장 많은 Stores 4라고 추론합니다. 숫자.

조건 ②가 틀렸기 때문에 얻은 ​​답도 틀렸다고 볼 수 있습니다.
분석:
숫자 1개 = 1바이트, 그러면 1바이트 = 숫자 1개?
어떤 경우에는, 즉 256진수에서 같다고 할 수 있는데, 포스터에서는 10진수를 사용하여 256진수를 커버했기 때문에 틀렸습니다
왜 256진수인가요? 1바이트는 0~255 사이의 모든 값을 나타낼 수 있으므로 int는 256자리 숫자 중 최대 4자리를 저장할 수 있습니다.

결론적으로 말하면, 포스터에서 말한 내용이 어떤 경우에는 맞지만, 256진수라는 전제조건이 추가되어야 합니다

大家讲道理

ASCII는 문자열을 표현하기 위해 숫자를 사용하는데, 숫자는 ASCII 이전 수준에서 메모리에 저장된다는 점을 이렇게 간단하게 이해하면 됩니다.
메모리(0과 1) => 숫자(보통 직접적으로 다른 진수가 될 수도 있음) ) => 한자 또는 문자(다양한 약어로 표현된 최종 표시)

같은 수준이 아닙니다.

大家讲道理

간단히 말하면
전자는 총 32개의 그리드가 있고, 각 그리드는 2개의 상황을 가질 수 있으며,
후자는 총 4개의 그리드만 있고, 각 그리드는 10개의 상황(0~9)을 갖습니다. ) ,
하나는 2의 32제곱이고, 다른 하나는 10의 4제곱입니다. 밑수와 거듭제곱을 모두 바꾸면 결과가 확실히 달라집니다.
전자는 실제로 컴퓨터의 이진법이고, 후자의 생각은 우리가 매일 사용하는 십진법이 됩니다.

구체적으로 말하면
ASCII 코드는 숫자, 영문자, 기호 등을 포함해 256개의 문자로 구성됩니다. 숫자는 그 중 10개(0~9)만 차지합니다.
그러면 왜 ASCII가 그렇게 많은 문자를 나타낼 수 있습니까?
알아두셔야 할 점은(모르면 어쩔 수 없음) ASCII 코드는 1바이트를 차지하고, 1바이트는 8비트를 갖는다는 것입니다.
각 비트에는 0과 1의 두 가지 상황만 있으므로 8비트의 조합은 다음과 같아야 합니다.
2 X 2 X 2 X 2 X 2 X 2 X 2 X 2 = 8/2 전력 = 256
즉, 8비트는 총 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자리 숫자만 표현하세요.

巴扎黑

바보같은 질문인 것 같습니다. . . ,,바이트와 몇 자릿수가 저장되는지는 확실히 다른 개념이 아닙니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿