zoukankan      html  css  js  c++  java
  • java内存,大端小端判断

    一,简介
    在计算机系统中,规定:每个地址单元都会对应一个字节(8个bit),但是,在c语言中,
    除了有一个字节(8个bit)的char,也有两个字节(16个bit)的short,
    也有四个字节(32个bit)的long(在不同的编译器下可能不同)。对于16位或者32位的处理器,
    即就是大于8位的处理器,由于寄存器的宽度大于一个字节,
    那么就存在如何将一个多字节的变量的数据如何存放的问题——所以,就有了大小端之分。

    大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址端。

    小端模式,是指数据的高字节保存在内存的高地址中,低位字节保存在在内存的低地址端。
    优势,劣势:
    小端模式 :强制转换数据不需要调整字节内容,1、2、4字节的存储方式一样。
    大端模式 :符号位的判定固定为第一个字节,容易判断正负。

    二,java判断大端小端示例:
    long a = UNSAFE.allocateMemory(8);
            try {
                UNSAFE.putLong(a, 0x0102030405060708L);
                //存放此long类型数据,实际存放占8个字节,01,02,03,04,05,06,07,08
                byte b = UNSAFE.getByte(a);
                //通过getByte方法获取刚才存放的long,取第一个字节
                //如果是大端,long类型顺序存放—》01,02,03,04,05,06,07,08  ,取第一位便是0x01
                //如果是小端,long类型顺序存放—》08,07,06,05,04,03,02,01  ,取第一位便是0x08
                switch (b) {
                    case 0x01:
                        ByteOrder byteOrder = ByteOrder.BIG_ENDIAN;
                        break;
                    case 0x08:
                        byteOrder = ByteOrder.LITTLE_ENDIAN;
                        break;
                    default:
                        assert false;
                        byteOrder = null;
                }
            }catch (Exception e){
    
            }
  • 相关阅读:
    后台管理UI
    14.6.3.2 Configuring Multiple Buffer Pool Instances 配置多个Buffer Poll 实例:
    14.6.3.1 The InnoDB Buffer Pool
    innodb_buffer_pool_instances and innodb_buffer_pool_size的关系
    猪肉都被绑上了“家族标签”,大数据已波及到农牧业!
    14.6.2 Configuring InnoDB for Read-Only Operation
    jquery EasyUI datagrid重新加载传参问题
    分布式系统事务一致性解决方案
    面试题整理
    dump iot表
  • 原文地址:https://www.cnblogs.com/dybe/p/11790955.html
Copyright © 2011-2022 走看看