03大端和小端(Big endian and Little endian)
1.大端和小端的问题
对于整型、长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节),而 Little endian 则相反,它认为第一个字节是低位字节(按照从低地址到高地址的顺序存放数据的低位字节到高位字节)。
(1)例如,假设从内存地址 0x0000 开始有以下数据:
/*地址*/ 0x0000 0x0001 0x0002 0x0003
/*数据*/ 0x12 0x34 0xab 0xcd
如果我们去读取一个地址为 0x0000 的四个字节变量,若字节序为 big-endian,则读出结果为 0x1234abcd;若字节序为 little-endian,则读出结果为 0xcdab3412。
(2)如果我们将 0x1234abcd 写入到以 0x0000 开始的内存中,则 Little endian 和 Big endian 模式的存放结果如下:
/*地址*/ 0x0000 0x0001 0x0002 0x0003
/*big-endian*/ 0x12 0x34 0xab 0xcd
/*little-endian*/ 0xcd 0xab 0x34 0x12
(3)总结:一般来说,x86 系列 CPU 都是 little-endian 的字节序,PowerPc 通常是 big-endian,网络字节序也是 big-endian。另外,有的 CPU 能通过跳线来设置 CPU 工作于 little endian 还是 big endian。
对于 0x12345678 的存储:
小端模式:(从低字节到高字节)
低位地址 0x78 0x56 ox34 0x12 高位地址
大端模式:(从高字节到低字节)
低位地址 0x12 0x34 0x56 0x78 高位地址
03大端和小端(Big endian and Little endian)的更多相关文章
- 大端和小端(Big endian and Little endian)
一.大端和小端的问题 对于整型.长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节):而 Little endian 则相反,它 ...
- 大端和小端(big endian little endian)
一.大端和小端的问题 对于整型.长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节):而 Little endian 则相反,它 ...
- 整型,长整型,无符号整型等 大端和小端(Big endian and Little endian)
一.大端和小端的问题 对于整型.长整型.无符号整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节):而 Little endian ...
- 【转】如何判断CPU是大端还是小端模式
原文网址:http://blog.csdn.net/ysdaniel/article/details/6617458 如何判断CPU是大端还是小端模式 http://blog.sina.com.cn/ ...
- 转!大端模式&小端模式
大端模式&小端模式 在C语言中除了8位的char型之外,还有16位的short型,32位的long型(要看具体的编译器),对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器 ...
- 关于byte[]字节传输的大端和小端小议
当前的存储器,多以byte为访问的最小单元,当一个逻辑上的地址必须分割为物理上的若干单元时就存在了先放谁后放谁的问题,于是端(endian)的问题应运而生了,对于不同的存储方法,就有大端(big-en ...
- 大端模式&小端模式、主机序&网络序、入栈地址高低问题
一.大端模式&小端模式 所谓的“大端模式”,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处 ...
- 判断CPU是大端还是小端模式
在小端模式中,低位字节放在低地址,高位字节放在高地址:在大端模式中,低位字节放在高地址,高位字节放在低地址.big-endian和little-endian,51单片机是典型的大端模式,Intel电脑 ...
- 用C语言,如何判断主机是 大端还是小端(字节序)
所谓大端就是指高位值在内存中放低位地址,所谓小端是指低位值在内存中放低位地址.比如 0x12345678 在大端机上是 12345678,在小端机上是 78564312,而一个主机是大端还是小端要看C ...
随机推荐
- git回退版本,已经commit过的文件丢了
参考:https://blog.csdn.net/qq_33877149/article/details/79705611 可以用 git reset --hard fa8694b 回退到以上相应的位 ...
- thinkphp5修改入口文件位置及相应的问题
问题1:thinkphp5修改入口文件 解决:参考手册 http://www.kancloud.cn/manual/thinkphp5/129746,然后需要把.htaccess跟入口文件放到同一目录 ...
- IOS在滚动的时候fixed消失
前段时间,除了apple发布了新的硬件之外,同步还发布了新的操作系统,IOS11,当大家都将注意力聚焦在那个奇怪的刘海该如何适配的时候,笔者的项目在适配IOS11却出现了其他的问题. 众所周知,I ...
- vim如何删除行首、行位空格、空格行
删除空格行: 非编辑状态下输入:g/^$/d 删除行首空格: 非编辑状态下输入:%s/^\s*//g 删除行尾空格: 非编辑状态下输入:%s/\s*$//g
- .NET 基础 一步步 一幕幕[XML基础操作]
XML可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 什么是XML,学他有什么用? 优点:容易读懂,格式标准任何语言都内置了XML分析引擎,不用单独进行文件分 ...
- docker 的目录问题
今天在使用Dockerfile制作镜像的时候,使用命令 :COPY aaa.sql /usr/test 下时, 总是报错 “INFO[0001] stat /var/lib/docker/aufs/m ...
- Eclipse启动SDK Manager报错:[SDK Manager] 'xcopy' 不是内部或外部命令,也不是可运行的程序。
解决方法,在path环境变量下加上C:\WINDOWS\system32;或将C:\WINDOWS\system32\xcopy.exe拷贝到android sdk目录的tools下面即可正常运行.
- jstl表达式的应用的条件
在el表达式中,有时我们要写for循环,这时我们要写 <c:forEach items="${list}" var="news" > </c: ...
- js根据鼠标方向划入遮罩层
js根据鼠标方向划入遮罩层: <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- JavaScript笔记2
1.浮点数在运算过程中会产生误差,因为计算机无法精确表示无限循环小数. 要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值(某个可接受的范围):Math.abs(1 / 3 - ( ...