• 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){
    
            }
  • 相关阅读:
    golang-----giao起来
    Django-----你醒了吗?
    linux
    dapper之连接数据库(Oracle,SQL Server,MySql)
    mongodb 物理删除数据
    一生难得的偶遇
    奇怪的电话
    我的魔兽争霸
    第四章 吃饭
    第三章 百花谷
  • 原文地址:https://www.cnblogs.com/dybe/p/11790955.html
Copyright © 2020-2023  润新知