Stagezm 2017-05-11 08:07 采纳率: 100%
浏览 1247
已采纳

JAVA INT BYTE 的问题

问1:
1个INT是4个字节,那意思是byte[4] 可以代表一个INT对吗
问2:
如果byte[4]可以代表一个INT,那一个byte是8位可以存储-128-127的数字(第一位是符号位)
那这样的话,INT最大值应该是:01111111011111110111111101111111=2139062143咯
但是用Integer.MAX_VALUE得出2147483647=01111111111111111111111111111111

所以我迷茫了,这个byte第一位是符号位到底怎么解释呀,为啥INT最大值(2147483647)第一位是0呀?

  • 写回答

2条回答 默认 最新

  • -无-怨-无-悔- 2017-05-11 08:43
    关注

    你好,是这样的,我们在理解这个问题时,如果要追根到底,那就是要了解计算机中内存的概念。
    首先,int a = 2;那么表示呢计算机在内存地址(假设是0x0001)处放了一个2,而计算机只认识二进制,所以在地址0x0001处能放了10(二进制),假设内存32位的,那么在地址0x0001处的二进制是00000000 00000000 00000000 00000010,这个空间就是int a所占的地址空间,那么这个空间的最大数就是01111111 11111111 11111111 11111111,最小数11111111 11111111 11111111 11111111
    而对于byte[4] 这是数组,数组里面的每一个数都是byte类型,每一个数都要占1个字节 也就是八位,也就是说假设byte数组的起始地址是0x0001,那么呢,0x0002、0x0003,0x0004放的都是byte类型的数。
    byte和int表示的是两种数据类型,byte有byte的规则 int有int的规则,请问你怎么样把byte[4]转化成int?
    如果你说byte[4]里面的每个元素如果是01111111转化成int时当成11111111,那还不是可以表示,但是事实上是很少会这么做的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作