java. 端序_c代码测试本机处理器的端序
1、端序简介(维基百科):
端序(Endianness),又称字节序、尾序。在计算机科学领域中,端序是指存放多字节数据的字节(byte)的顺序,典型的情况是整数在内存中的存放方式和网络传输的传输顺序。Endianness有时候也可以用指位序(bit)。
对于单一的字节(a byte),大部分处理器以相同的顺序处理位元(bit),因此单字节的存放方法和传输方式一般相同。
对于多字节数据,如整数(32位机中一般占4字节),在不同的处理器的存放方式主要有两种,以内存中0x0A0B0C0D的存放方式为例,分别有以下几种方式:
1)大端序(英:big-endian)或称大尾序。
数据以8bit为单位:
地址增长方向 →
...
0x0A
0x0B
0x0C
0x0D
...
示例中,最高有效位(MSB, Most Significant Byte)是0x0A 存储在最低的内存地址处。下一个字节0x0B存在后面的地址处。正类似于十六进制字节从左到右的阅读顺序。
数据以16bit为单位:
地址增长方向 →
...
0x0A0B
0x0C0D
...
最高的16bit单元0x0A0B存储在低位。
2)小端序(英:little-endian)或称小尾序。
数据以8bit为单位:
地址增长方向 →
...
0x0D
0x0C
0x0B
0x0A
...
最低有效位(LSB,Least Significant Byte)是0x0D 存储在最低的内存地址处。后面字节依次存在后面的地址处。
数据以16bit为单位:
地址增长方向 →
...
0x0DOC
0x0BOA
...
最低的16bit单元0xOD0C存储在低位。
3)混合序(英:middle-endian)具有更复杂的顺序。
以PDP-11为例,0x0A0B0C0D被存储为:
32bit在PDP-11的存储方式
地址增长方向 →
...
0x0B
0x0A
0x0D
0x0C
...
可以看作最高的16bit位和低位以大端序存储,但16bit内部以小端存储。
2、代码实现:
测试思想主要是应用c语言的指针,以浮点数125.5为例,浮点数的在内存的存储方式可参看博文:
float型数据125.5转换为标准浮点格式:0 10000101 11110110000000000000000
则在内存中存放方式为:
1)小端
00000000 低地址
00000000
11111011
01000010 高地址
2)大端
00000000 高地址
00000000
11111011
01000010 低地址
代码如下:
#include
int main(int argc, char *argv[])
{
float a=125.5;
char *p=(char *)&a;
printf("%d ",*p);
printf("%d ",*(p+1));
printf("%d ",*(p+2));
printf("%d\n",*(p+3));
return 0;
}
如果是小端,则结果: 0 0 -5 66
如果是大端,则结果: 66 -5 0 0
另外,也可以用以下更加简便的代码测试:
int main()
{
unsigned int a=65;//A的ASCII码为65
char *p=(char *)a;
printf("%c",a);
return 0;
}
如果输出是A,则可判断为小端序。
3、处理器体系(维基百科):
java. 端序_c代码测试本机处理器的端序相关推荐
- java 获取上市公司基本信息 代码测试
原理:java通过jsoup访问网站,通过html标签获取公司的基本信息 使用的jar包版本 <!-- https://mvnrepository.com/artifact/org.jsoup/ ...
- Java平台下使用Appium测试(真机而非模拟机)
准备: ①下载安装Java的jdk包,资源链接及教程:https://zhuanlan.zhihu.com/p/76725836 ②下载安装 node.js; ③下载 Appium,下载安装之后桌面会 ...
- java使用emqtt实现即时聊天_emqttd java代码测试
emqttd 集群在上一节我们已经配置完毕.emqttd默认占用1883端口用于MQTT连接,8083端口用于HTTP接口,通过HTTP接口从应用程序向MQTT客户端发布消息.下面我们通过java实现 ...
- 安装jdk配置环境、cmd命令行测试环境变量配置是否正确及运行java程序、安装IDEA编写代码测试
文章目录 1.安装jdk配置环境 2.cmd命令行测试环境变量配置是否正确及运行java程序 3.安装IDEA编写代码测试 1.安装jdk配置环境 首先打开官网Oracle https://www.o ...
- 位域 内存 字节序_C语言中的位域、字节序、比特序、大小端(转)
1.比特序 / 位序 / bit numbering / 我们知道一个字节有8位,也就是8个比特位.从第0位到第7位共8位.比特序就是用来描述比特位在字节中的存放顺序的.通过阅读网页的内容,关于比特序 ...
- 使用java代码查询本机ip地址
一.使用java代码查询本机ip地址 public class TestInetAddress {public static void main(String[] args) {try {String ...
- 简单的Java代码测试样例设计
简单的Java代码测试样例设计 函数一 public static int findLast(int[] x, int y) {for (int i = x.length - 1; i > 0; ...
- libsvm java 实例_LibSvm流程及java代码测试
使用libSvm实现文本分类的基本过程,此文参考 使用libsvm实现文本分类 对前期数据准备及后续的分类测试进行了验证,同时对文中作者的分词组件修改成hanLP分词,对数字进行过滤,仅保留长度大于1 ...
- 让电脑死机的java代码_小编为你win7系统Java活动脚本出错导致电脑死机的还原方法...
随着电脑的使用率越来越高,我们有时候可能会遇到win7系统Java活动脚本出错导致电脑死机问题,如果我们遇到了win7系统Java活动脚本出错导致电脑死机的问题,要怎么处理win7系统Java活动脚本 ...
最新文章
- 开始报名丨CCF C³-05@亚马逊云科技:未来云计算之旅
- ps -aux返回超过100%
- 12.PDE与PTE
- Docker 安装 For CentOS 7.4
- python通过什么连接数据库_如何使用python连接数据库?
- Cocos Creator 粒子效果插件
- Q96:PT(3.5):木纹纹理(Wood Texture)
- Python爬虫--- 1.2 BS4库的安装与使用 1
- 百度SEO之-关键词的种类
- KMS模拟器VLMCSD再次更新
- Python练习题:快递价格计算器
- 你眼中的程序员是什么样子的?
- 电脑自动关机后又自动开机怎么办
- python计算累计收益率的函数_大盘及策略收益率的公式推导与Python代码
- Linux 内核签名(签名内核模块)、linux 驱动签名
- 哈尔滨理工大学21级新生程序设计竞赛(同步赛)Jay的小迷弟(快速幂)
- SVN强制编写注释才能提交,提交中不允许删除文件操作。
- 深度学习-图片识别(上)
- QA实习第三周个人感受
- CentOS 8 通过二进制安装 MySQL
热门文章
- 计算机网络和传统电话网络的最大区别是,传统电话和网络电话有什么区别
- asp.net 调用本地php,.NET_Asp.net获取服务器指定文件夹目录文件并提供下载的方法,本文实例讲述了Asp.net获取服务 - phpStudy...
- 机考可以作弊吗_法考主观题也全面机考?不慌,看这篇文章
- 属于web框架的python库_(2017)我不建议使用的Python Web框架
- [POI2006]OKR-Periods of Words
- 理解JavaScript继承(二)
- Spring-JDBC通用Dao
- mysql命令行执行外部文件
- VS 2010 开发 ActiveX 开始篇
- ECSHOP其他页面调用首页的FLASH主广告