大端字节序和小端字节序

  • 1.什么是大小端字节序
  • 2.验证大小端字节序

1.什么是大小端字节序

计算机硬件有两种储存数据的方式:大端字节序(MSB)和 小端字节序(LSB)。

小端字节序(LSB)

将这样的数据存储在计算机中,地址从低位到高位应该是:78 56 34 12

int a=0x12345678


一共四个字节的地址,假设从0x1001 ~ 0x1004;那么,对于小端字节序来说系统是这样存储的:

由图可以看出,小端字节序的存储规则是:数据的低位存储在地址低位,数据的高位存储在地址高位

大端字节序(MSB)
大端字节序就是这样存储

由图可以看出,大端字节序的存储规则:数据的高位存储在地址的低位,数据的低位存储在地址的高位

2.验证大小端字节序

首先直接上代码

#include <stdio.h>int main()
{int     a = 0x12345678;char    *p = NULL;p = (char *)&a;if(*p == 0x78){printf("小端字节序\n");}if(*p == 0x12){printf("大端字节序\n");}printf("p = %x\n", *p);return 0;
}

再来看原理:

  • 指针会指向整形变量的首地址,当我们调用*p往a的地址里面取值时,系统会根据指针类型大小取对应大小的值(char类型的指针就会从他指向的地址往里取char类型(1个字节)大小的值)
  • 当我们使用char类型的指针指向一个int类型的数,再通过 *p 取值时,只会去取其低地址位的1个字节的内容
  • 取出低地址的值,结合之前的大小端的存储规则判断得出,这是大端还是小端

运行结果

大端字节序和小端字节序相关推荐

  1. java 大端字节序_理解字节序 大端字节序和小端字节序

    以下内容参考了 http://www.ruanyifeng.com/blog/2016/11/byte-order.html https://blog.csdn.net/yishengzhiai005 ...

  2. 【转】理解字节序 大端字节序和小端字节序

    转自:https://www.cnblogs.com/gremount/p/8830707.html 以下内容参考了 http://www.ruanyifeng.com/blog/2016/11/by ...

  3. 大端字节序与小端字节序的转换

    逐步加深对字节操作的理解,记录一下大端字节序与小端字节序的转换,开发环境是vs2010,项目类型是控制台输出程序,下面是代码实现: // ByteOrder_demo.cpp : 定义控制台应用程序的 ...

  4. 大端字节序与小端字节序 (网络字节序与主机字节序)

    大端字节序与小端字节序 1. 简介 2. 判断机器字节序(C/C++) 3. 主机字节序与网络字节序的转换 4. IP地址与网络字节序的转换 1. 简介 字节序分为大端字节序(big endian)和 ...

  5. 如何确定CPU是大端字节序还是小端字节序?

    大端字节序:高字节存放在低地址,低字节存放在高低址 小端字节序:低字节存放在高低址,高字节存放在低地址 大小端字节顺序它是CPU的属性,所哟不同的CPU的大小端字节顺序也不同,移植的时候需要先判断当前 ...

  6. 字节序(小端字节序与大端字节序)

    概念: 字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序. 常见的字节序有: Little endian(小端字节序):将低序字节存储在起始地址: Big endian(大端字节序 ...

  7. big-endian和litte-endian转换 大端字节次序,小端字节次序转换

    原文地址:http://blog.csdn.net/callinglove/article/details/7840421 计算机都是以八位一个字节为存储单位,那么一个16位的整数,也就是C语言中的s ...

  8. 小端字节序与大端字节序

    端模式分为:小端字节序和大端字节序,也就是字节在内存中的顺序. 小端字节序:低字节存于内存低地址:高字节存于内存高地址.如一个long型数据0x12345678 0x0029f458 0x78 0x0 ...

  9. 小端字节序和大端字节序

    端模式分为:小端字节序和大端字节序,也就是字节在内存中的顺序. 需要注意的是,对于数据来说,高字节是指最高位字节,即左边第一位! 小端字节序:低字节存于内存低地址:高字节存于内存高地址.如一个long ...

最新文章

  1. 设计所需的各种输出格式(包括整数、实数、字符串等),用一个文件名format.h把这些信息都包括到此文件内,另编写一个文件,用文件包含命令验证可以使用这些格式
  2. 产生线程安全的原因(1)(操作系统)
  3. 技术人看《长安十二时辰》的正确姿势是?
  4. 如何用极路由新插件【搜狐视频】进行远程下载
  5. tcp并发服务器_在Go中构建并发TCP服务器
  6. 最强 IDE 之争:Eclipse 还是没超过 Visual Studio、Xcode 回温
  7. oracle无法减小列长度,中国港湾扩展表单分配时调整字段后保存时报错,无法正常维护表单定义...
  8. 四、docker-compose的编程模版
  9. 微信小程序--微信扫一扫登录pc页面功能的实现
  10. 美国地名大全(美国城市名称英文、中文)
  11. 谷歌 Chrome 浏览器 隐藏标题 缩小标签页
  12. 好用的影子系统软件,系统辅助工具
  13. c语言错误c1083是什么意思,fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directo...
  14. P3320 [SDOI2015]寻宝游戏
  15. 我的偶像Micheal.Jackson (MTV全集):本来是有一套Micheal的经典VCD的,但被朋友拿走再没还回来……...
  16. 【英语学习】关于音标的汇总图分享
  17. 2020-04-24--黑寡妇的复活
  18. java引入外部字体_Java中如何自定义字体文件(引用外部字体)?-字体文件
  19. 让癌细胞自己饿死自己,科学家找到肿瘤新方法|Science
  20. 国产设计软件都有哪些,国产设计工具推荐

热门文章

  1. 大型超市购物车蓝牙智能锁解决方案
  2. Java解惑 电子书
  3. Revit初试水之点击按钮打开网页
  4. 狂神CSS3学习笔记
  5. Rmd输出pdf报错
  6. 常见的分布式文件系统介绍
  7. 【ORA-00257:archiver error. Connect internal only, until freed;清理归档日志】
  8. msconfig打不开怎么办?
  9. win10计算机服务打不开,win10系统设置打不开怎么办
  10. mysql里面使用技巧_MySQL的使用技巧