zoukankan      html  css  js  c++  java
  • 大小端

    在X86体中 数字是以小端形式存在 的

     小端的意思就是高字节 在高(内存) 地址,低字节在低(内存)地址

    而大端正好相反 ,其 高字节 在低(内存)地址, 低字节 在高(内存)地址

    例如 

    int a=1;

    int 在32位或64位机 中都是4个字节,即 00000000 00000000 00000000 00000001

    第一组00000000 属于高字节

    高字节 在内存高地址, 

    内存低地址                                                                               内存高地址            

    ---------------------------------------------------------------------------------------------->

    000000001 00000000 00000000 00000000

    用一个程序证明下

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
        int a=1;
    
        char b[4];
        b[0]= (char)a;
        b[1] = (char)(a>>8);
        b[2] = (char)(a>>16);
        b[3] = a>>24;
    
        int c=0;
        c = (int)b[0] | (int)b[1] <<8 | (int)b[2] << 16| (int)b[3];
        printf("转后的数值为%d
    ", c);
        return 0;
    }

    (gdb) p a
    $1 = 1

    (gdb) p &a
    $3 = (int *) 0x7fffffffe4cc
    (gdb) x/4bu 0x7fffffffe4cc
    0x7fffffffe4cc: 1 0 0 0

    转后的数值为1

    如果要通过程序存储为大端模式呢

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
        int a=1;
    
        char b[4];
        b[0]=(char)a>>24;
        b[1]=(char)a>>16;
        b[2]=(char)a>>8;
        b[3]=(char)a;
    
        int c=0;
        c = (int)b[0]<<24 | (int)b[1] <<16 | (int)b[2] << 8| (int)b[3];
        printf("转后的数值为%d
    ", c);
        return 0;
    }

    (gdb) p b
    $1 = "00000001"
    (gdb) p &b
    $2 = (char (*)[4]) 0x7fffffffe4c0
    (gdb) x/4bu 0x7fffffffe4c0
    0x7fffffffe4c0: 0 0 0 1

  • 相关阅读:
    生产者消费者模型
    查看网络通不通的几种方法
    tomcat在45秒内没有启动,启动超时
    request获取各种路径
    修改web项目发布路径
    web.xml不同版本的头
    Web.xml 错误或异常页面配置
    ModelAndView command
    java初始化顺序
    初始化时的过程
  • 原文地址:https://www.cnblogs.com/taek/p/7521137.html
Copyright © 2011-2022 走看看