如何判断电脑CPU大小端

转载 2017年01月03日 21:24:30

电脑的cpu有两种,大端和小端cpu。

大端cpu:

所谓的大端,是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;

小端:

所谓的小端,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。

下面是判断的程序:

#include <stdio.h>  
  
union node  
{  
    int num;  
    char ch;  
};  
  
void big_small(union node p)  
{  
    p.num = 0x12345678;  
  
    if(p.ch == 0x78)  
    {  
        printf("It is small-endian.\n");  
    }  
    else  
    {  
        printf("It is big-endian.\n");  
    }  
}  
  
int main()  
{  
    union node p;  
      
    big_small(p);  
      
    return 0;  
  
}  

在程序中我们定义了一个结构体node,其中包含了两个类型的数据,分别为int 型和char型。

程序运行时,内存给他们分配空间,int型分配4个字节,char型也分配4个字节,(原因上一个博客有写),

在函数big_small中我们给结构体中的num对应空间存放数据,存放16进制数0x12345678.(12是高字节,78是低字节)。

如果是小端cpu,它会把高字节存放在高地址,低地址存放低字节。

大端cpu则相反。

所以存放完毕时我们执行语句if(p.ch == 0x78),因为所有cpu都会从低地址读取数据,

所以如果读取的数据为78,即说明该16进制数把78这个低字节数据存放在低地址中。所以可以判断这是个小端cpu。

反之就是大端。


相关文章推荐

仅硬盘大小电脑在中国问世:无CPU无内存无系统

国内第一台无CPU、无内存、无系统的电脑主机在沪投产   一只与移动硬盘大小相仿的金属盒子,“身上”长着4个USB接口和电源、网络、耳麦、投影仪专用接口,只需连接上显示器、键盘、鼠标等外接设备并插上...

判断CPU的大小端

原文出处:http://blog.sina.com.cn/s/blog_54f82cc201012c1k.html

用union判断cpu的大小端

版本1:在ARM体系中,每个字单元包含4个字节单元或者两个半字单元。在字单元中,4个字节哪一个是高位字节,哪一个是低位字节则有两种不同的格式:big-endian和little-endian格式。在小...

C语言程序判断计算机的CPU大小端

如何判断一台计算机的CPU是大端还是小字端对齐呢?    那么首先得了解何为大端,何为小端,明确一下概念。    所谓大端模式,是指字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 ...

如何测试电脑的大小端存储

1.定义大端存储:数据的高字节放在内存的底地址处,低字节放在高地址处; 小端存储:数据的高字节放在内存的高地址处,低字节放在低地址处。2.测试方法一(利用联合体的共用一块内存空间的特性)#inclu...
  • IT_10
  • IT_10
  • 2016-11-12 20:01
  • 150

C/C++中的联合体union及CPU大小端判定

在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥...

CPU的大小端模式

不同体系结构的CPU,数据在内存中存放的排列顺序是不一样的。 存储器中对数据的存储是以字节(Byte)为基本单位的,因此,字(Word)和半字(Half-Word)在存储器中就有两种次序,分别称为:...

【转】C/C++中的联合体union及CPU大小端判定

在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥...

C/C++中的联合体union及CPU大小端判定

在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥...

bit feild and CPU endian 位域和大小端

先看一个示例: // C code: bit fields & CPU endian #include struct bit_field{ unsigned short bit4:4; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)