使用C语言判断一个机器是大端机还是小端机
1.什么是大端,什么是小端?
大端:数据的高位字节存放在低地址内,数据的低位字节存放在高地址内。
小端:数据的高位字节存放在高地址内,数据的低位字节存放在低地址内。
一个整型是4个字节,如:0x1a2b3c4d。电脑读取内存数据时,是从低位地址到高位地址进行读取(从左到右)。
在小端机器中从低地址到高地址的存放方式为:0x4d,0x3c,0x2b,0x1a;(低地址存低位)
在大端机器中从低地址到高地址的存放方式为:0x1a,0x2b,0x3c,0x4d;(低地址存高位)
2.方法一:将字符数据赋给整型数据,通过读取整型数据的值来判别大端还是小端
#include<iostream>
using namespace std;
int main()
{unsigned int data = 0;unsigned int *point = &data;*(char*)point = 0x22;if(data == 0x22)cout << "这是一个小端机" << endl;else if(data == 0x22000000)cout << "这是一个大端机" << endl;elsecout << "无法判定该机器类型" << endl;return 0;
}
3.方法二:通过联合体的共享内存特性,来判断大端机、小端机
union是一个联合体,所有变量公用一块内存,在内存中的存储是按最长的那个变量所需要的位数来开辟内存的。
#include<iostream>
using namespace std;union UN{char ch;int data;
};int main()
{union UN un;un.data = 0x1a2b3c4d;if(un.ch == 0x4d)cout << "这是一个小端机" << endl;else if(un.ch == 0x1a)cout << "这是一个大端机" << endl;elsecout << "无法判定该机器" << endl;return 0;
}
4.方法三:通过指针来判断
将一个整型数据赋给字符型数据,通过查看字符型数据的值来判定是大端机还是小端机。将整型赋给字符型,会发生数据的丢失。如果是大端机,则会丢失低字节;如果是小端机,则会丢失高字节。和第一种方法很类似,一个是查看整型的值,一个是查看字符型的值。
int main()
{int data = 1;char* p = (char*)&data;if(*p == 1)cout << "这是一个小端机" << endl;else if(*p == 0)cout << "这是一个大端机" << endl;return 0;
}
输出结果:
~O(∩_∩)O~
使用C语言判断一个机器是大端机还是小端机相关推荐
- 题目:如何判断一个机器是大端还是小端
如何判断一个机器是大端还是小端 关于大端小端的概念, 小端:数据的高位字节存放在高地址内,数据的低位字节存放在低地址内. 大端:数据的高位字节存放在低地址内,数据的低位字节存放在高地址内. 典型的体系 ...
- 大端机与小端机介绍及其判断(C)
为什么会有大小端模式之分呢? 这是因为在计算机中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8 bit.但是在C 语言中除了 8 bit 的char之外,还有 16 bit 的 ...
- 大端机,小端机;截断与提升
什么是截断? 通俗一些来说,截断就是将一个长的整形变成一个短整形,在赋值时,长整形的数据中会有一部分没有空间存储,所以在短整形中只能存放低位的数据. 例如: char a = 1; 此时1本身是int ...
- 写一个程序判断机器是大端存储还是小端存储
0x11223344 大端:11 22 33 44 小端:44 33 22 11 #include<iostream>using namespace std;int ma ...
- 判断计算机是大端机还是小端机
这个是把以前写的代码先贴到CSDN上来,具体的后面说,先贴上代码! short int x; //2 bytes char x0, x1; x = 0x1122;//内存低地址单元 x0 = ((ch ...
- (c语言)判断一个正整数是否是回文数
(c语言)判断一个正整数是否是回文数 回文数是指从左到右和从右到左读这个数是一样的.例如:1,101,1221都是回文数. #include<stdio.h> #include<st ...
- C语言判断计算机存储是大端还是小端
计算机的一个int型数据是用多个字节表示的,如果在内存中存放时标称该数据的地址中存放的是数据的最低字节,就叫小端机,反之把高字节存放在标称地址中的则称为大端机.所以可以定义一个int变量,将其地址强制 ...
- C语言--测试电脑存储模式(大端存储OR小端存储)
相信大家都知道大端存储和小端存储的概念,这在平时,我们一般不用考虑,但是,在某些场合,这些概念就显得很重要,比如,在 Socket 通信时,我们的电脑是小端存储模式,可是传送数据或者消息给对方电脑时, ...
- C语言之大端模式与小端模式
大端模式与小端模式的定义(字节序) 大端模式:数据的高字节在低地址,低字节在高地址 小端模式:数据的高字节在高地址,低字节在低地址 怎么判断系统是大端模式和小端模式 首先来看两个知识点: (1)联合体 ...
最新文章
- HDU-5723 Abandoned country
- 计算机硬件的基本组成
- python计算汽车的平均油耗_汽车行车电脑中的平均油耗是按哪个行驶里程计算的?...
- AQS理解之六,AQS的其他实现类
- 怪事,硬盘上的FC3_cd1的ISO莫名其妙被改变了
- 从编解码、传输到基础架构 详解Bigo多媒体技术栈
- AspNetCore结合Redis实践消息队列
- 【每日一题】8月25日题目精讲 XOR-pyramid
- [剑指offer][JAVA][面试题56 - I][第260题][位运算][HashSet]
- 扔盘子(51Nod-1279)
- javaweb之mysql数据库
- Codeforces Beta Round #80 (Div. 1 Only) D. Time to Raid Cowavans 分块
- 2022-4-16 c++ 杂记 mutex GUARDED_BY std::unique_ptr unordered_map ::开头
- android 手机滤镜
- 输出所有3位数的水仙花数,例:153=1的3次方+5的3次方+3的3次方 谭浩强《c语言程序设计》第五章第八题
- php realpath()
- element框架el-aside高度100%显示
- 偏振光学的基础(一)
- 从给定网页上下载img src= /格式的图片,并保存到制指定路径
- 基于HTML+CSS制作一个简单的家乡网页制作作业,广州介绍旅游网页设计代码 学生个人html静态网页制作成品代码
热门文章
- 国标28181:海康、大华、宇视摄像头怎么添加GB28181协议
- 我是怎么在千氪上一天赚到5000氪金的?
- 暴风集团入多个被执行人名单-千氪
- 财务管理html,财务管理.html
- 深度学习入门(转)(备用)
- python打印标签脚本
- 数据外连接 LEFT OUT JOIN 的用法
- 2020电工(初级)考试题库及电工(初级)模拟考试题
- 此证书已在此前安装为一个证书权威机构
- 湖北文理学院数学与计算机科学学院,以德为本严要求 以勤为先勇创新——记湖北文理学院数学与计算机科学学院执行院长 吴 钊-湖北文理学院校报电子版《湖北文理学院报》...