当前位置: 首页 > wzjs >正文

河北住建城乡建设网站怎么引流到微信呢

河北住建城乡建设网站,怎么引流到微信呢,重庆企业网站建设公司,好看logo图片高清【作者主页】siy2333 【专栏介绍】⌈c语言日寄MAX⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还…

在这里插入图片描述

【作者主页】siy2333
【专栏介绍】⌈c语言日寄MAX⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是进阶开发者,这里都能满足你的需求!
【食用方法】1.根据题目自行尝试 2.查看基础思路完善题解 3.学习拓展算法
【Gitee链接】资源保存在我的Gitee仓库:https://gitee.com/siy2333/study


文章目录

  • 前言
  • 一、什么是大小端字节序?
    • 1. 书面定义
      • 大端字节序(Big-Endian)
      • 小端字节序(Little-Endian)
    • 2.直观理解
      • 高位数据和低位数据
      • 大小端对比
  • 二、怎么写程序判断机器是大端还是小端?
    • 指针
      • 数据的类型会影响指向数据的指针位置吗?
        • 动态内存分配
        • 变量数据
    • 基础判断函数
    • 联合体判断法
  • 总结


前言

大小端字节序是什么?怎么通过程序判断机器是大端还是小段?全局变量和局部变量对大小端的判断有影响吗?本文将为你带来深度的大小端字节序解析,力求一文解决全部疑问。


一、什么是大小端字节序?

大小端字节序是计算机中存储 多字节数据时字节的排列顺序。它们是两种不同的存储方式。

1. 书面定义

大端字节序(Big-Endian)

  • 定义:大端字节序是指在多字节数据中,高位字节存放在内存的低地址端,低位字节存放在内存的高地址端。也就是说,数据的最高有效字节(MSB)存储在地址最低的位置,最低有效字节(LSB)存储在地址最高的位置。

小端字节序(Little-Endian)

  • 定义:小端字节序是指在多字节数据中,低位字节存放在内存的低地址端,高位字节存放在内存的高地址端。也就是说,数据的最低有效字节(LSB)存储在地址最低的位置,最高有效字节(MSB)存储在地址最高的位置。

2.直观理解

我们假设有这样一段由低地址到高地址的内存,每一个格子代表1字节
在这里插入图片描述

现在,我们要将一个有符号整形(int)数据储存在里面。

小端字节序按照“高对高,低对低”的顺序排列。
所谓“高对高,低对低”意思是:高地址存放高位数据,低地址存放低位数据。

而大端则是反过来,”低对高,高对低“。
意思是:低地址存放高位数据,高地址存放低位数据。

高位数据和低位数据

高地址我们知道是哪里,但是什么是高位数据呢?什么又是低位数据呢?
我们看这样一个例子:
在这里插入图片描述

可以看到,对于一个整形数字“2147483649”而言,哪些是低位,哪些是高位。
也就是:高位代表权重更高的比特位,低位代表权重低的比特位。
对于这个数据,
低位的”1“是2^0,计入的值是1。
而高位的”1“是2^31,计入的值为2147483648。

大小端对比

知道了排序规则和高位和低位的定义,我们就可以知道大、小端机器怎么存放多字节数据。
我们将内存映射出来,把他们的数据放在一起对比:
在这里插入图片描述
结合这张图,我们就可以理解大、小端字节序的区别。

值得注意的是:
我们发现,在图中的数据,大小端的区别只在字节层面上。
而字节之下:字节内部 比特位 的排列顺序没有被改变。

二、怎么写程序判断机器是大端还是小端?

指针

在写这个程序之前,我们需要知道计算机是怎么读取数据的。
对于c语言而言,读取内存需要一个指针,这个指针存放着数据在内存中的地址。
在这里插入图片描述

结合这张图,我们知道,无论是大端还是小端,指向数据的指针,都在低地址位。

数据的类型会影响指向数据的指针位置吗?

不会。
我们知道,数据一般分为两种,一种是变量数据,一种是动态内存分配的数据。

动态内存分配

我们知道,动态内存规划分配的内存储存在”堆“中,而堆的使用习惯是优先使用低地址位。
如果我们要动态内存分配一个整形数据,那么内存开辟是这样的:
在这里插入图片描述
可以看到,我们在低地址已经使用的内存之后开辟了4个字节的内存。
这个新数据的指针如图:

在这里插入图片描述
没错,此时的指针指向的依旧是数据的低地址处。

变量数据

再来看看变量数据。
变量数据储存在”栈“中,而栈的使用习惯是先使用高地址,再使用低地址。
如果我们要开辟一个整形变量,那么它在内存中是这样操作的:
在这里插入图片描述
这个变量数据的指针是这样的:
在这里插入图片描述
总结:无论是变量还是动态内存分配的数据,指针位置都是低地址处。

基础判断函数

想要判断大小端,只需要判断指针位置对应的字节就可以了。
在这里插入图片描述

那么,思路就是:

  1. 设置一个无符号整形(unsigned int)变量,赋值“1”。(往内存中存入数据)
  2. 强制类型转换为无符号字符(unsigned char)类型(只读取第一个字节的数据)
  3. 判断数据是0,还是1。(0就是小端,1就是大端)

解决方案如下:

#include <stdio.h>// 函数声明:判断系统是大端字节序还是小端字节序
int isLittleEndian() {// 定义一个无符号整型变量,赋值为1unsigned int x = 1;// 将x的地址强制转换为unsigned char指针// 这样可以逐字节访问x的内存unsigned char* bytePointer = (unsigned char*)&x;// 检查x的第一个字节(最低地址的字节)// 如果x的值为1,那么在小端字节序下,第一个字节为1// 在大端字节序下,第一个字节为0if (bytePointer[0] == 1) {// 如果第一个字节为1,说明是小端字节序return 1;} else {// 否则是大端字节序return 0;}
}int main() {// 调用函数判断字节序if (isLittleEndian()) {printf("System is Little Endian.\n");} else {printf("System is Big Endian.\n");}return 0;
}

联合体判断法

使用联合体(union)也可以实现判断大小端字节序的功能。
基于联合体的解决方案如下:

#include <stdio.h>// 定义一个联合体,包含一个无符号整型和一个无符号字符数组
union EndianChecker {unsigned int value; // 用于存储整数值unsigned char bytes[sizeof(unsigned int)]; // 用于逐字节访问value的内存
};// 函数声明:判断系统是大端字节序还是小端字节序
int isLittleEndian() {// 创建一个联合体变量union EndianChecker checker;// 将联合体的value成员赋值为1checker.value = 1;// 检查联合体的bytes数组的第一个字节// 如果是小端字节序,第一个字节(最低地址的字节)为1// 如果是大端字节序,第一个字节为0if (checker.bytes[0] == 1) {// 如果第一个字节为1,说明是小端字节序return 1;} else {// 否则是大端字节序return 0;}
}int main() {// 调用函数判断字节序if (isLittleEndian()) {printf("System is Little Endian.\n");} else {printf("System is Big Endian.\n");}return 0;
}

总结

大小端字节序是针对“字节”的排序,和bit的排序无关,和数据类型无关。
我们可以使用指针+强制类型转换法实现大小端字节序的判定,也可以使用联合体实现。

关注窝,每三天至少更新一篇优质c语言题目详解~
本文手工制作,如果对你有帮助,欢迎点赞收藏和评论~

[专栏链接QwQ] :⌈c语言日寄MAX⌋CSDN
[关注博主ava]:siy2333
感谢观看~ 我们下次再见!!

http://www.dtcms.com/wzjs/502720.html

相关文章:

  • 建设服装网站今日足球赛事分析推荐
  • 今傲网站做的怎么样自己怎么制作一个网站
  • 网站已在别处备案怎么转入阿里云众志seo
  • 长沙公司做网站多少钱淘宝引流推广平台
  • 深圳建设工程信息网站湘潭网站制作
  • 成都网站建设 龙兵企业品牌推广营销方案
  • 宜昌哪有有做网站的宁波网站推广运营公司
  • nodejs 做视频网站泉州全网推广
  • 个人专业制作网站接外贸订单的渠道平台哪个好
  • 网站建设费用的财务核算今天中国新闻
  • 发号网站源码青岛官网优化
  • 网站关键词找不到网站免费制作
  • 网店推广计划书提高seo排名
  • 怎么做自己的刷赞网站2022最好的百度seo
  • 自己做网站都要什么广告代理公司
  • 帮别人做诈骗网站获利 判刑宁波seo外包
  • 做暖暖视频免费观看免费网站青岛网站seo分析
  • 乌鲁木齐 建设厅网站整合营销传播理论
  • 专业网站建设办公seo外链是什么意思
  • 域名绿标免费申请seo网站推广优化就找微源优化
  • 今日全国生猪价格一览表猪价多少南京seo外包平台
  • 如何做网站诊断海外网络推广
  • 做信息分类网站难吗武汉百捷集团百度推广服务有限公司
  • 东莞短视频seo制作seo排名优化有哪些
  • 网站建设功能规划公司网络推广
  • 永兴县人民政府门户网站线上宣传方案
  • 大连建设网站的公司运营商大数据精准营销获客
  • 云南建设工程质量监督网站湖南网站设计
  • 自建站推广广州谷歌推广
  • 青岛网站建设 推荐青岛博采网络绍兴seo排名外包