大小端如何理解记忆

大小端

背景

  在不同的计算机系统中,数据的存储和读取有所不同,计算机的通信和存储依赖于一致的规则。目前计算机通常采用的存储机制主要有两种:大端模式(Big-endian)和小端模式(Little-endian)

常规理解

  大端模式:数据的低位或低字节(对整个序列取值影响最小的那个bit/byte)保存在内存的高地址中,而数据的高位或高字节,存储时放在低地址,读取时放在流开始。这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放,存储顺序与我们所看到的数据顺序一致
  小端模式:数据的低位或低字节,存储时放在低地址,读取时放在流的末尾,而数据的高位或高字节保存在内存的高地址中。

轻松记忆

  在裘宗燕翻译的《程序设计实践》里,这对术语并没有翻译为“大端”和小端,而是“高尾端”“低尾端”,这就好理解了:如果把一个数看成一个字符串,比如11223344看成”11223344”,末尾是个’\0’,’11’到’44’个占用一个存储单元,那么它的尾端很显然是44,前面的高还是低就表示尾端放在高地址还是低地址。
  (数据看成字符串)大端——高尾端,小端——低尾端
  尤其需要注意:存储和传输(/读取)都遵循相同的机制,计算机才能正常通信。

示例

  下面这个例子,基于ubuntu14.04 Intel x86_64环境,目前Intel x86是小端模式。
  两个不同的4字节16进制数据x=0x12345678y=0x1,强转为char*型,打印每个字节的地址及值

#include <stdio.h>  
#include <sys/types.h>  
main()  
{
    int x=0x12345678;
    unsigned char *p=(char *)&x;
    printf("x = %x\n", x);
    printf("%p %p %p %p\n",&p[0],&p[1],&p[2],&p[3]);
    printf("%0x %0x %0x %0x\n",p[0],p[1],p[2],p[3]);

    int y=0x1;  
    unsigned char *q=(char *)&y;
    printf("y = %x\n", y);
    printf("%p %p %p %p\n",&p[0],&p[1],&p[2],&p[3]);
    printf("%02x %02x %02x %02x\n",q[0],q[1],q[2],q[3]);
}

  运行结果如下,可以看出地址是递增的,并且尾端 x的78和y的01 都是存储在低地址,即低尾端,小端模式:

x = 12345678
0x7ffe25cb4478 0x7ffe25cb4479 0x7ffe25cb447a 0x7ffe25cb447b
78 56 34 12
y = 1
0x7ffe25cb4478 0x7ffe25cb4479 0x7ffe25cb447a 0x7ffe25cb447b
01 00 00 00

  Little-Endian主要用于PC的CPU中,如Intel x86系列,很多的ARM,DSP都为小端模式;Big-Endian则主要应用在目前的Mac机器中,目前TCP/IP网络及Java虚拟机的字节序都是Big-endian的。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可视化PC首页控制台是一种能够提供用户界面的控制台工具,用于管理和控制PC首页的各项功能和设置。通过可视化的方式,用户可以直观地进行操作和调整。 首先,可视化PC首页控制台提供了一个直观的用户界面,用户可以通过图形化的方式进行操作,而不需要记忆和输入复杂的指令。这样,无论用户是专业人士还是普通用户,都可以方便地进行管理和控制。 其次,可视化PC首页控制台的功能十分丰富。用户可以在控制台上进行网站的布局调整、主题设置、插件管理、内容编辑等操作。比如,用户可以通过拖拽和放大缩小的方式,调整页面的布局和元素的大小;用户也可以通过选择和点击的方式,更换网站的主题和风格;用户还可以通过直接编辑内容的方式,进行文章和页面的更新。 此外,可视化PC首页控制台还提供了实时预览的功能。用户在进行操作的同时,可以实时查看修改的效果,这样可以快速调整和优化页面的显示效果。 最后,可视化PC首页控制台还具有用户权限管理的功能。管理员可以通过控制台对用户进行管理,包括添加、删除和访问权限的设置。这样可以保证网站的安全和私密性。 总之,可视化PC首页控制台是一种便捷、直观和功能丰富的管理工具,可以帮助用户更好地管理和控制PC首页,提升用户体验和网站的品质。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值