大端模式,小端模式
Posted xikl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大端模式,小端模式相关的知识,希望对你有一定的参考价值。
我们看数字的习惯是从左到右,即123读为一百二十三
以下例子使用十六进制0x0102说明
比如用01代表内存中01的二进制写法
大端模式下:
低地址->高地址
---------------
| 01 | 02 |
---------------
数据存放由 高字节 到 低字节
即低地址存放高字节,高地址存放低字节
也就是我们习惯的看法
在内存中显示
00000001 00000010
用列的方式会更好看些:
00000001 低
↓
00000010 高
小端模式下:
低地址->高地址
---------------
| 02 | 01 |
---------------
数据存放由 低字节 到 高字节
从逻辑上讲低字节放低地址,高字节放高地址
在内存中显示
00000010 00000001
用列的方式:
00000010 低
↓
00000001 高
如何判断自己是小端模式还是大端模式?
由上面内容可知0x0102在内存中
要么为00000001 00000010
要么为00000010 00000001
我们定义一个char类型指针变量p,刚好是short型变量m字节的一半
用p得到m的首地址,即*p得到的值(注:指针得到的地址为低地址)
要么得到00000001
要么得到00000010
1 #include<stdio.h> 2 3 int main(void) { 4 short m = 0x0102; 5 char* p = &m; 6 if (*p == 0x01) { 7 printf("大端模式"); 8 } 9 else if (*p == 0x02) { 10 printf("小端模式"); 11 } 12 }
运行以上程序即可得到结果。
(注:家用型电脑一般是小端模式)
以上是关于大端模式,小端模式的主要内容,如果未能解决你的问题,请参考以下文章