判断大小端问题

简介: 判断大小端问题

在此之前我们在数据的储存中见过了大小端问题,本该在联合体中再将一遍,我在这里补上。

首先我们先认识以下大小端


什么是大端小端:

大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;

小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中


为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8 bit。但是在C语言中除了8 bit的char之外,还有16 bit的short型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。


用函数判断计算机的大小段


上代码:

#include <stdio.h>
int check_sys()
{
    int i = 1;
    return (*(char *)&i);
}
int main()
{
    int ret = check_sys();
    if(ret == 1)
    {
        printf("小端\n");
    }
    else
    {
        printf("大端\n");
    }
    return 0;
}

用联合体来判断计算机的大小段

由于:

联合也是一种特殊的自定义类型,这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)。所以我们可以利用这一特性来解决大小端问题。

上代码:

typedef union {
  int a;
  char b;
}UN;
int main(){
  UN u;
  u.a = 1;
  if(u.b == 1) printf("小端存储\n");
  else printf("大端存储\n");
  return 0;
}


相关文章
|
JavaScript
JS自动生成速记符、拼音简写/拼音的声母(例如:“你挚爱的强哥”转换为“NZADQG”)。提取首字母,返回大写形式;提取拼音, 返回首字母大写形式(全拼)。
JS自动生成速记符、拼音简写/拼音的声母(例如:“你挚爱的强哥”转换为“NZADQG”)。提取首字母,返回大写形式;提取拼音, 返回首字母大写形式(全拼)。
19483 0
|
SQL XML Java
【MyBatis】 MyBatis框架下的高效数据操作:深入理解增删查改(CRUD)
【MyBatis】 MyBatis框架下的高效数据操作:深入理解增删查改(CRUD)
232 1
|
消息中间件 缓存 NoSQL
记一次蚂蚁金服四面遭虐,面试水太深,过河的渡船你造好了吗?
有道无术,术可成;有术无道,止于道;以术识道,以道御术
|
消息中间件 存储 Java
RabbitMQ中的消息持久化是如何实现的?
RabbitMQ中的消息持久化是如何实现的?
453 0
|
消息中间件 网络协议 物联网
物联网系统中常见的通信协议分析
物联网系统中常见的通信协议分析
647 0
|
Oracle 关系型数据库 程序员
程序员行业中,有一些具有较高含金量的证书
程序员行业中,有一些具有较高含金量的证书
548 1
|
算法
m基于Costas环的QPSK载波同步matlab性能仿真,对比不同环路系数等对载波同步的影响
m基于Costas环的QPSK载波同步matlab性能仿真,对比不同环路系数等对载波同步的影响
492 1
|
存储 缓存 安全
阿里云服务器计算型c7 通用型g7 内存型r7实例性能及指标数据解析
计算型c7 通用型g7 内存型r7实例均属于阿里云最新的第七代云服务器实例规格,七代云服务器全量搭载安全芯片、构建新一代立体化可信环境,在云服务器安全、存储、网络和端到端性能方面均有所提升。下面是小编整理的阿里云服务器计算型c7 通用型g7 内存型r7实例性能及指标数据解析。
1347 0
阿里云服务器计算型c7 通用型g7 内存型r7实例性能及指标数据解析
|
缓存 供应链 前端开发
Vue+SpringBoot打造电子元器件管理系统(附源码文档)(一)
Vue+SpringBoot打造电子元器件管理系统(附源码文档)
454 0
|
Java 容器
IT科技生态的三代论
IT科技生态的三代论
IT科技生态的三代论