素材牛VIP会员
int占4字节,一数占一字符,为什么int能表示5位以上的数字?
 38***38  分类:Java代码  人气:1722  回帖:17  发布于6年前 收藏

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

讨论这个帖子(17)垃圾回帖将一律封号处理……

Lv6 码匠
你***饭 学生 6年前#1

感觉是两件事。int占4字节这个事能给你的限定是int能达到的最大值。而AscII说的一个数字占用的空间是一个字节,应该是物理空间,占了多大地方。这个空间理论上讲是可以无限大的,只要硬盘够用,可以无限的长。而int占4字节说的是能声明出来的值占的地方,声明的值达到一定上下限(正负2的31次方)就会溢出。不管你的硬盘多大,这个限定在形同的机器上是不会变的。我是这么理解的,不知道你能不能理解。

Lv1 新人
威***军 职业无 6年前#2

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

Lv4 码徒
大***咒 JAVA开发工程师 6年前#3

和楼上的想法基本差不多。
首先这是两个概念,在我看来,一个表示存储,而另一个表示展示。
例如:我们都知道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 进制的数字

Lv2 入门
xi***iu JS工程师 6年前#4

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

Lv7 码师
ha***23 职业无 6年前#5

ASCII 是编码规范,int 是表示的在内存中的存储类型。就好像一辆小轿车规定最多5个人,多了交警就会处罚你,这就是int,而里面做的是谁,叫什么,身份证号是啥,这就是ASCII码来规范的了。

Lv7 码师
un***oo 职业无 6年前#6

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

Lv6 码匠
su***an JAVA开发工程师 6年前#7

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

上一页12下一页
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取