zoukankan      html  css  js  c++  java
  • 22 大端序和小端序

    分析下列程序,输出结果(AC)

    #include<stdio.h>
    #include<stdlib.h>
    union X{
    	int32_t a;
    	struct {
    		int16_t b;
    		int16_t c;
    	};
    };
    int main() {
    	X x;
    	x.a=0x20150810;
    	printf("%x,%x
    ",x.b,x.c);
    }
    

      A 2015,810    B50810,201    C810,2015    D20150,810

    分析: Little-Endian: 低地址存放低位、Big-Endian: 低地址存放高位

    32bit宽的数0x12345678

     

    在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:

                                              内存地址     0x4000     0x4001     0x4002     0x4003
                                              存放内容     0x78        0x56        0x34         0x12
    而在Big- endian模式CPU内存中的存放方式则为:
                                              内存地址     0x4000     0x4001     0x4002     0x4003
                                              存放内容     0x12         0x34        0x56         0x78

    0x20150810

    如果按照大端模式存储:从低地址到高地址:20 15 08 10

                                      输出从低地址到高地址:20 15 08 10

    如果按照小端模式存储:从低地址到高地址:10 08 15 20 

                                      输出从高地址到低地址:08 10 20 15

    为什么小端序是从高地址输出,大端序是从地低地址输出?

    因为你的存储顺序都不同,如果按照相同的方式读取(比如从高到低),那读取来的结果就有两种可能,那么必有一种错了啊。题里是把一个int读成两个short,所以有两种可能。但是假如int读成int,无论是大端小端,绝对仅由一种结果。

    ---------------------------------------------------------------------------------------------------------------------------

    #include<stdio.h>
    int fun(char s[]) {
    	char *p=s;
    	while(*p!=0)	p++;
    	return (p-s);
    }
    main() {
    	printf("%d
    ",fun("OABCDEF"));
    }
    

      最后输出结果是7.

    ------------------------------------------------------------------------------------------------------------------------

    一个算法应该具有以下五个重要的特征:   

    1、有穷性: 一个算法必须保证执行有限步之后结束;   

    2、确切性: 算法的每一步骤必须有确切的定义;   

    3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件;   

    4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;   

    5、可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。

    拥抱明天! 不给自己做枷锁去限制自己。 别让时代的悲哀,成为你人生的悲哀。
  • 相关阅读:
    Scrum:The Definition of Done —— 作业有没有写完呢?
    中兴通讯 可视化devops 牛啊 屠亚奇
    qunar-dns
    通过业务系统的重构实践DDD
    通过业务系统的重构实践DDD
    一键部署Kubernetes高可用集群
    springboot系列
    Ubuntu · Docker —— 从入门到实践
    容器化操作系统概览
    基于 CentOS7 的 Kubernetes 集群
  • 原文地址:https://www.cnblogs.com/dd2hm/p/7277248.html
Copyright © 2011-2022 走看看