• 大小端模式


    什么是大小端模式
    (1)大端模式(big endian)和小端模式(little endian)
    (2)在计算机通信发展起来后,遇到一个问题就是:在串口通信中,一次只能发送一个字节。如果要发送一个int类型的数据就会有
    一个问题。int类型有四个字节,我是按照byte0 byte1 byte2 byte3这样的方式发送,还是按照byte3 byte2 byte1 byte0这样的顺序
    发送。规则就是发送方和接收方必须按照同样的字节顺序来通信,否则就会出现错误。
    (3)现在所说的大小端模式,更多的是指计算机存储系统的大小端。因为存储系统是32位的,但是数据仍然是按照字节为单位的。
    于是乎一个32位的二进制在内存存储时有2种分布方式:高字节对应低地址(大端模式)、高字节对应高地址(小端模式)
    (4)所以我们在写代码时,当不知道当前环境是用大端模式还是小端模式的时候,就需要用代码来检测当前系统的大小端。

     1 #include <stdio.h>
     2 //共用体中很重要的一点:a和b都是从u1的低地址开始的。
     3 union myunion
     4 {
     5     int a;
     6     char b;
     7 };
     8 int is_little_endian(void)
     9 {
    10     union myunion u1;
    11     u1.a = 1;           //地址0的那个字节,小端模式会放1,大端模式会放0
    12     return u1.b;
    13 }
    14 int is_little_endian2(void)
    15 {
    16     int a = 1;
    17     char b = *(char *)(&a);  //指针方式是共用体方式的本质
    18     return b;
    19 }
    20 int main(void)
    21 {
    22     int i = is_little_endian();
    23     if(i == 1)
    24     {
    25         printf("小端模式.
    ");
    26     }       
    27     else
    28     {
    29         printf("大端模式.
    ");
    30     }
    31 }
  • 相关阅读:
    泛型
    Math类
    Static关键字
    Java最新面试问答整理
    Jenkins显示语言切换为中文(最终解决办法)
    eclipse中导入SVN项目步骤
    Xshell连接不上虚拟机Linux系统
    SQLYog执行SQL脚本提示:错误代码: 1067
    Web应用三种部署方式的优缺点
    web应用配置虚拟路径映射方式一配置不成功问题解决办法
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11720188.html
Copyright © 2020-2023  润新知