大小端的判断
创始人
2024-02-03 18:50:28

1.关于进制

1.1 进制数与位数

n进制数中,一位最多表示到数字n-1
十进制中1位最多能表示9个数字

满则溢,溢则进位。

拿我们最常用的是10 进制来举例说明,
构成十进制的最小单位数: 1 2 3 4 5 6 7 8 9 0
十进制(其实只有从9到0这几个数字,10本身并不存在,或者说10并不是构成十进制的最小单位数,
10是进位后的结果,由于生活经验我们早就熟烂于心所以认为10进制中10是最小单位数):
用1,2,3,4,5,6,7,8,9,0这几个数字表示想要表达的数,
其中0的含义是满后归为零,进位表示对满的次数的记录拿数数来说,从1数到9,此时的状态还没有满,再数一个数后,
此时状态变满(达到进制要求的最大数),由于满则溢出,溢出则进位(新添一位),
就变成了两位数 10(逢十进一)。

2.字节

二进制中 一位可表示2个数字,分别是0和1,一位表示1比特
1个字节 等于 8 位
计算机存储的最小单位是字节也就是8位比特
因为是存储的最小单位所以读取的时候也是按字节作为最小单位进行读取的。

#include
int main(){printf("char 占几字节: %d\n",sizeof(char));printf("short 占几字节: %d\n",sizeof(short));}

结果:
在这里插入图片描述

#include
int main(){union {short s;char c[sizeof(short)];} un;printf("un.char 占几字节: %d,地址是: %p\n",sizeof(un.s),&un.s);printf("un.c    占几字节: %d,地址是: %p \n",sizeof(un.c),&un.c);}

short s 和 char c[sizeof(short)] 公用了同一块地址空间,都占用2个字节
union 公用一段内存
在这里插入图片描述

3.大小端

一个数字例如十进制的100,从左往右看,1表示最高位,后面俩0依次是次高位和最低位,
所谓小端即: 如果计算机的内存地址空间是从递增式的(举例),

把100存进去,如果从100的最低位开始一个一个存即现存0,再存0,最后存1,
那么这就是小端。
如果是从高位开始存,先存1,再存0,再存0,那么就是大端

判断大小端的代码片断

#include
int main(){union {short s;char c[sizeof(short)];} un;printf("short 占用的字节数为: %d\n",sizeof(un));un.s=0x0102;if(un.c[0]==1&&un.c[1]==2){printf("big end\n");}else if(un.c[0]==2&&un.c[1]==1){printf("small end\n");}
}

在这里插入图片描述

由于union 占用2个字节,
存进去的 short s 的低位字节是02,高位字节是01
读取的时候如果读第一个字节是02,第二个字节是01,那么就是小端,否则是大端。

4.网络字节序

由于不同主机之间使用的不同的主机序,即有的是大端模式,有的是小端模式,
那么通信时如果一个是大端,一个是小端,读取的数据和发送的数据就会出错,
为了保持统一,我们需要在发送数据之前把主机序统一转为网络字节序。

使用函数 htonl来把主机字节序转网络字节序,如下

#include
#include 
int main(){int a = 0x01020304;short int b = 0x0102;printf("htonl(0x%08x)=0x%08x\n",a,htonl(a));printf("htonl(0x%08x)=0x%08x\n",b,htonl(b));
}

在这里插入图片描述
可以看出来网络字节序使用是大端模式

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...