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条)

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献