论一个字节有没有大小端

1 篇文章 0 订阅
1 篇文章 0 订阅

假设对存储器上一个字节进行编址, 地址线是从0~7由小到大,

磁盘,内存和寄存器皆为存储器, 当然都是0~7,

数据从磁盘读入内存,假设按位读,数据是[0]到[0], [1]到[1],...

应该不存在反人类的设计[7]到[0],[6]到[1],...

其实讲到这里,已经很明白,为什么一个字节没有大小端的问题了.

我们再深度思考一下,

位操作右移是低位出, 左移是高位出.

这可以看出大家(其实是汇编器)习惯上是左为高位,右为低位.

事实上这当然是编译器为了符合程序员们的习惯;

而真正去操作移位的CPU只知道从这头往另一头移,

即是地址[0]这端移出,还是地址[7]端移出.

CPU或寄存器才不管你是左是右呢,

这可能你不能理解, 我举个例子,

你拿支笔横放在你眼前(正面直视), 笔帽一端朝右;

当把笔帽拔出时,认为是向右移出一位;

就是说笔帽拔出就是低位出, 记住这一点;

再把笔帽一端朝你的左边,

把笔帽拔出, 笔认为还是笔帽拔出(自己的低位出)

而你看到的是左端移出;

再如当你看你家沙发时,小桌在左侧.

而你坐到沙发上时, 小桌则在你右侧;

所以最终左右与高低位是如何定的呢?

最后总结一下, 那就是编程最重要的基础点:

编址, 也叫索引: 假设寄存器位: 左高 7 6 5 4 3 2 1 0 右低

大家统一的习惯: [7]高位在左侧, [0]低位在右侧

但你得知道实际上编址是这样的: 0 1 2 3 4 5 6 7, 8 9 10 ...

告诉你是 左高 7 6 5 4 3 2 1 0 右低, 只是因为我们的数字,

高位在左, 低位满向左进位, 如 7519+1=7520

而小端模式,是将低位存到低字节,高位存到高字节.

如果我们这样看存储器编址,则顺了:

... 10 9 8 7 6 5 4 3 2 1 0 :<=址编看样这们我<==

高 7 5 2 0 低

最终觉醒,是数字与显示方向不统一搞出的字节序.

如果是,个十百千万...

则不会有大小端的事情了.

如有不同见解, 欢迎大家评论.

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

newticigam

为更多的好知识共享出来加油!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值