聊聊java中的进制问题( 二 )


高位字节排放在内存的低地址端即该值的起始地址 , 低位字节排放在内存的高地址端
为什么会有大小端呢?
在计算机中 , 每个地址单元都对应着一个字节(8bit)数据 。java中int类型占据4个字节 , long占据8个字节 , 计算机是由32位和64位之分的 , 处理器因此也就是有32位和64位之分 , 现在有一个32位的处理器 , 突然来了一个8字节64位的数据 , 这时候处理器就不能一下子处理了 , 于是就要把8个字节的数据分开存放 , 这一存放就要分出个高地了 , 谁在前面谁在后面的问题 。
比如说下面的这个例子(前几天做的一道面试原题):
小端情况

聊聊java中的进制问题

文章插图
 
大端情况
聊聊java中的进制问题

文章插图
 
这个在大端模式下是正常的 。牢记牢记 。
五、进制的使用场景
上面在介绍的时候其实说了一部分 , 但是这里再简单的举个例子 , 最常见的例子就是序列化 。我们知道客户端我们可以使用java语言编写 , 但是服务器就不一定了 , 可能是java , 也可能是C++,这时候传输数据怎么办呢?这俩语言之间又相互不认识 。这时候客户端java就可以把我们的数据切分序列化成二进制数 , 二进制数计算机到哪都能认识 , 这时候把二进制数发送到服务端 , 服务端按照一定的规则反序列化就OK了 。
对于字符串来说那就是太简单了 , 我们直接getBytes就可以转化成byte 。但是对于int该怎么办呢?我们给出一个例子 , 其他的可以自己测试一下 。
聊聊java中的进制问题

文章插图
 
OK , 进制中常见的问题先列出这么多 , 欢迎批评指正 。

【聊聊java中的进制问题】


推荐阅读