• 大小端


    在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

  • 相关阅读:
    一个漂亮的PHP验证码
    一个漂亮的php验证码类(分享)
    PHP中exit()与die()的区别
    自定义PHP页面跳转函数redirect($url, $time = 0, $msg = '')
    MySQL时间字段究竟使用INT还是DateTime
    mysql中为int设置长度究竟是什么意思
    Array数组对象
    Math对象
    对象篇学习-字符串对象
    事件的学习
  • 原文地址:https://www.cnblogs.com/taek/p/7521137.html
Copyright © 2020-2023  润新知