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

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

动漫人物
浏览 2454回答 16
16回答

HUWWW

1字节(Byte) = 8 bit 一个 int类型 = 32bit 所以可以最多表示2^32 * 2个数

慕运维8079593

感觉好傻的问题。。。,,字节和存储几位数肯定不是两个概念啦

DIEA

简单的说就是:前者总共有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位数了。

一只甜甜圈

ascii里面是用数字表达字符串的,而数字存到内存中是在ascii的前面一个级别,你可以简单的这样理解:内存(0和1)=>数字(通常也可以直接为其他进制)=>汉字或者字母(各种进制所表达的最终展示) 他们不是一个级别的概念。

哆啦的时光机

一个字节是8位4个字节就是32位所以int是32位但int是有符号整数,可以表示的最大数字是31个1也就是2的31次方-1

翻翻过去那场雪

..............‘1’ != 1‘2’ != 2‘3’ != 3(1)10 = (1)2(2)10 = (10)2(3)10 = (11)2char占一字节32位int占四字节

呼如林

‘1’【char】和1【int】是不一样的因为他们在二进制中的表示的方法不同‘1’ =》00110001【char是一字节,八位,会有特殊意义,例如可以代表符号什么的】1 =》00000000000000000000000000000001【int是4字节,32位,只用于代表数字】

紫衣仙女

和楼上的想法基本差不多。首先这是两个概念,在我看来,一个表示存储,而另一个表示展示。例如:我们都知道boolean类型,同样的值,在某些情况下,可以表示为1、0,也可以表示为true、false。 楼主的意识误区在于概念中的错误。首先我们来分析下楼主的逻辑,再找出其中的错误:∵ ① int = 4 字节; ② Ascll里,1数字 = 1字节 ∴ int = 4 数字 从而推导出 int 最多储存4位数字。 我们可以看出,条件②是错误,所以得到的答案是错误的分析:1数字 = 1字节,那么1字节 = 1 数字么? 我们可以说,在某些情况下是相等的, 就是在 256 进制下,而楼主却用10进制来套256进制,所以错了为什么是256进制?是因为1字节可以表示0-255之间的任意数值,所以 int 最多存储4位 256位进制的数字 综上所述,楼主的话在某些情况下是对的,但需要加一个前提,就是 256 进制的数字

繁花不似锦

ascii里定义的是字符的表达方式,不是数字的表达方式,计算机存储数字和字符串的方式是不一样的。

墨色风雨

int = 4字节(Byte),而不是4比特位(bit) 1字节 = 8比特位(bit) 1个比特位 = 0或者1 1个字节 = 0-255 而现实生活中的十进制:一位十进制 = 0-9满10进1二进制也是一样的1bit = 0-1满1进1一个int 0 的二进制是: 00000000000000000000000000000000+1的结果是啊: 00000000000000000000000000000001再+1的结果是: 00000000000000000000000000000010再+1的结果是: 00000000000000000000000000000100再+1000: 00000000000000000000001111101011
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java