从阿拉伯数字看大端小端字节序

理解大端和小端(big-endian & little endian)这两类字节序,有个新解释。数字的表示,或者扩大到信息的表示,其目标不外乎两类,描述和操作:

  • 描述:不需要改变原始信息,是一个从粗到细的逐步细化的理解过程;
  • 操作:可能改变原始信息,操作过程需要从细微处逐步积累对整体的影响。

一个最最简单的例子就是我们读写阿拉伯数字,都是大数位在前,小数位在后,这属于大端情形,但在进行竖式计算(加减乘)时,却是右对齐,先考虑小数位,再逐步扩展至大数位。

描述一个数字,从大到小的数位顺序可以让人逐步细化理解,比如房价 31450/平方,当读出 3w 时,人心里自然会有一个感性的认知和心理预期,这房子要 3w 多,然后听到 1k 后会觉得并不比 3w 多多少,毕竟 3w9k 也是 3w 多,比 3w1k 多多了,后面的就属精打细算了,能不能不抹零换个 iPhone 的事。反过来,如果先说 50 块,购房者得不到任何有意义信息,即使他听到 3w 时他也不知道后面会不会还有数字,所以这种从小数位到大数位的计数法需要一个休止符,很麻烦。

但计算就不一样,1x + 3y 中的 x,y 是 0 还是 9 对结果影响非常大,40 和 58 的区别,而 1 和 3 在没有计算得到最终结果前,只能估摸一个近乎同等数量级非常粗糙的范围。

除法为什么特殊?因为除法并不影响整体结果,换句话说,除法的商只是人们心中的一个抽象,它只是一个切割方法,并不自然存在。

除了数字,其它信息也一样,比如我们看到英文 pro-,for- 前缀,或看到中文 “提手旁”,“单人旁”,大概就知道后面这个词的描述范围,后面那些东西都是在逐步细化。

这么理解计算机领域的大端和小端就很容易了。

不可否认存在一些偶然随机因素导致早期的计算机都倾向于大端字节序,随之的网络传输也继承了它,但大端字节序确实符合人的习惯,就像我们手写数字一样。但对于计算,小端字节序或许更加适合,正如我们做竖式乘法时右对齐一样。

和早期简单通信,集中计算模式不同,PC 时代过多的本地渲染需要更频繁的散装运算,计算机技术迅猛发展的兼容性需求引发更频繁的强制类型转换,小端机 “恰好” 做这些更加高效。但即便大端机全被淘汰,考虑到兼容性,网络大端字节序已经成了事实标准。

不管怎样,在整个计算机网络领域,描述性字节序和操作性字节序算是各归其位了,网络协议是纯描述性的,而端主机计算则属于操作性,它们的字节序表示都适合自己的语义,加一道转换也不多。

浙江温州皮鞋湿,下雨进水不会胖。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/505839.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易于上手难于精通---关于游戏性的一点思考

1、小鸟、狙击、一闪,都是通过精准时机来逼迫玩家练习, 而弹道、出招时机等玩意,不是那么容易掌握的,需要反复的观察、反应与行动, 这也正是游戏性的体现, 玩家能感觉到一些朦胧的东西,但又不…

微信小程序——创建滑动颜色条

在微信小程序中,你可以使用 slider 组件来创建一个颜色滑动条。以下是一个简单的示例,展示了如何实现一个颜色滑动条,该滑动条会根据滑动位置改变背景颜色。 步骤一:创建小程序项目 首先,使用微信开发者工具创建一个新…

JVM实战—12.OOM的定位和解决

大纲 1.如何对系统的OOM异常进行监控和报警 2.如何在JVM内存溢出时自动dump内存快照 3.Metaspace区域内存溢出时应如何解决(OutOfMemoryError: Metaspace) 4.JVM栈内存溢出时应如何解决(StackOverflowError) 5.JVM堆内存溢出时应该如何解决(OutOfMemoryError: Java heap s…

Unity自定义编辑器:基于枚举类型动态显示属性

1.参考链接 2.应用 target并设置多选编辑 添加[CanEditMultipleObjects] using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor;[CustomEditor(typeof(LightsState))] [CanEditMultipleObjects] public class TestInspector :…

Qt重写webrtc的demo peerconnection

整个demo为: 可以选择多个编码方式: cmake_minimum_required(VERSION 3.5)project(untitled LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)set(CMA…

IOS HTTPS代理抓包工具使用教程

打开抓包软件 在设备列表中选择要抓包的 设备,然后选择功能区域中的 HTTPS代理抓包。根据弹出的提示按照配置文件和设置手机代理。如果是本机则会自动配置,只需要按照提醒操作即可。 iOS 抓包准备 通过 USB 将 iOS 设备连接到电脑,设备需解…

《机器学习》——支持向量机(SVM)

文章目录 什么是支持向量机?基本原理数学模型 支持向量机模型模型参数属性信息 支持向量机实例(1)实例步骤读取数据可视化原始数据使用支持向量机训练可视化支持向量机结果完整代码 支持向量机实例(2)实例步骤导入数据…

高级软件工程-复习

高级软件工程复习 坐标国科大,下面是老师说的考试重点。 Ruby编程语言的一些特征需要了解要能读得懂Ruby程序Git的基本命令操作知道Rails的MVC工作机理需要清楚,Model, Controller, View各司什么职责明白BDD的User Story需要会写,SMART要求能…

使用 Maxwell 计算母线的电动势

三相短路事件的动力学 三相短路事件在电气系统中至关重要,因为三相之间的意外连接会导致电流大幅激增。如果管理不当,这些事件可能会造成损坏,因为它们会对电气元件(尤其是母线)产生极大的力和热效应。 短路时&#x…

Github出现复杂问题 无法合并 分支冲突太多 如何复原

目录 问题再现 解决思路 当然我所指的是在 main 分支开一个新的分支 删除本地文件夹 重新克隆 开一个新分支 切换分支 下载远程分支 文件覆盖 合并到主分支 ​​​​​​​问题再现 太复杂了 无法更改 编译器现状 全部崩溃了 无法更改 即使创建一个新的分支也无济于…

Jenkins触发器--在其他项目执行后构建

前言: jenkins中有多种触发器可用,可以方便的控制构建的启动 这里简单介绍下项目后构建的配置方法 1. 解释: Build after other projects are built Set up a trigger so that when some other projects finish building, a new build is…

CI/CD 流水线

CI/CD 流水线 CI 与 CD 的边界CI 持续集成CD(持续交付/持续部署)自动化流程示例: Jenkins 引入到 CI/CD 流程在本地或服务器上安装 Jenkins。配置 Jenkins 环境流程设计CI 阶段:Jenkins 流水线实现CD 阶段:Jenkins 流水…

计算机毕业设计Python机器学习农作物健康识别系统 人工智能 图像识别 机器学习 大数据毕业设计 算法

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

计算机网络之---物理层设备

什么是物理层设备 物理层设备是指负责数据在物理媒介上传输的硬件设备,它们主要处理数据的转换、信号的传输与接收,而不涉及数据的内容或意义。常见的物理层设备包括网卡、集线器、光纤收发器、调制解调器等。 物理层设备有哪些 1、网卡(N…

HTML实战课堂之简单的拜年程序

一、目录:  一、目录: 二、祝福 三:代码讲解 (1)详细解释: 1.HTML部分 2. CSS部分 三、运行效果(随机截图): 四、完整代码: 二、祝福…

【数据库系统概论】数据库恢复技术

目录 11.1 事务的基本概念 事务的定义 事务的开始与结束 事务的ACID特性 破坏ACID特性的因素 11.2 数据库恢复概述 11.3 故障的种类 1. 事务内部的故障 2. 系统故障 3. 介质故障 4. 计算机病毒 11.4 恢复的实现技术 如何建立冗余数据 数据转储 登记日志文件 11…

Ubuntu问题 -- 硬盘存储不够了, 如何挂载一个新的硬盘上去, 图文简单明了, 已操作成功

需求 我现在有一个ubuntu22.04操作系统的服务器, 但是当前硬盘不够用了, 我买了一个1T的SSD固态硬盘, 且已经安装在服务器上了, 我需要将这个硬盘挂载到当前ubuntu的某个目录上 开始 1. 确认新硬盘是否被系统识别 打开终端,输入以下命令查看系统识别到的硬盘&…

Linux第一个系统程序---进度条

进度条---命令行版本 回车换行 其实本质上回车和换行是不同概念,我们用一张图来简单的理解一下: 在计算机语言当中: 换行符:\n 回车符:\r \r\n:回车换行 这时候有人可能会有疑问:我在学习C…

JavaSE——网络编程

一、InetAddress类 InetAddress是Java中用于封装IP地址的类。 获取本机的InetAddress对象: InetAddress localHost InetAddress.getLocalHost();根据指定的主机名获取InetAddress对象(比如说域名) InetAddress host InetAddress.getByNa…

CompletableFuture // todo

相比较所有代码都在主线程执行,使用Future的好处:利用服务器多核、并发的优势。 不足: 开启没有返回值的异步线程: 1、runAsync 使用lambda表达式: 开启有返回值的异步线程: 1、supplyAsync 异步任务中的…