java虚拟机 大小端_每个程序员都应当知道的“大小端”
概述
机器是分大小端的,这对我们编程有什么影响呢?什么又是大小端呢?也许我们很多时候都不清楚,但仍然可以很好地使用电脑,或者编写代码。但我认为《圣经》里有句话说得很好,“你应该了解真相,真相会使你自由”。
所以这次,我要揭开“字节端”的面纱,共享科学之美。
小故事
Jonathan swift在1726年写的讽刺小说《格列佛游记》,小人国的内战就源于吃水煮鸡蛋时究竟是从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生6次叛乱,其中一个皇帝送了命,另一个丢了皇位。
这就是Endian的由来。
大小端应用领域
各个体系的计算机通常采用的字节存储机制主要有两种:大端(Big-Endian)和小端(Little-Endian)。
Little-Endian主要用于现在的pc机上,比如Intel的x86系列;Big-Endian主要指PowerPC系列处理器。
另外,目前的TCP/IP网络及Java虚拟机的字节序都是Big-Endian的,这意味着如果通过网络传输0x12345678这个整型变量,首先被发送的应该是0x12,接着0x34,0x56,0x78。所以我们的程序在处理网络流的时候,必须注意字节序的问题。
大小端原理
MSB:Most Significant Bit/Byte,译为最重要的位或最重要的字节。
用来表明在一个bit序列(1byte是8个bit组成的序列)或一个byte序列(1word是2个byte组成的序列)中对整个序列取值影响最大的那个bit/byte。
LSB:Least Significant Bit/Byte,译为最不重要的位或最不重要的字节。
用来表明在一个bit序列(1byte是8个bit组成的序列)或一个byte序列(1word是2个byte组成的序列)中对整个序列取值影响最小的那个bit/byte。
举个栗子
一个十六进制的整数:0x12345678
0x12就是MSB,0x78就是LSB。
而对于0x78这个字节,它的二进制值0x01111000,那么最左边的0就是MSB,最右边0就是LSB。
Big-Endian
Big-Endian其实就是规定MSB在存储时放在低地址,在传输时MSB放在流的开始;
LSB存储时放在高地址,在传输时放在流的末尾。
Little-Endian
Little-Endian其实就是规定MSB在存储时放在高地址,在传输时MSB放在流的末尾;
LSB存储时放在低地址,在传输时放在流的开始。
举个栗子
0x12345678
Big-Endian
地址0:0x12;地址1:0x34;地址2:0x56;地址3:0x78
Little-Endian
地址0:0x78;地址1:0x56;地址2:0x34;地址3:0x12
总结
其实大小端很简单只需了解几点:
大小端是由硬件决定的,小端主要是x86处理器,大端主要是PowerPC;
大小端是一种字节存储机制;
大端是最重要的字节存储在低地址;
小端是最重要的字节存储在高地址。
java虚拟机 大小端_每个程序员都应当知道的“大小端”相关推荐
- 一般项目中哪里体现了数据结构_优秀程序员都应该学习的数据结构与算法项目(GitHub 开源清单)...
前言 算法为王. 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手:只有内功深厚者,前端之路才会走得更远. 强烈推荐 GitHub 上值得前端学习的数据结构与算法项目,包含 gif ...
- 入党对程序员有什么用_为什么程序员都喜欢用两个大屏显示器?网友:一个复制一个粘贴...
如今的程序员似乎对办公电脑的配置要求非常高,连一些相对普通的配置都不入他们的"法眼"!都要比较先进的配置.不过想想也是,毕竟电脑是他们天天打交道的玩意.然而笔者却发现,程序员的办公 ...
- java职业发展路线图_从程序员到CTO的Java技术路线图 JAVA职业规划 JAVA职业发展路线图 系统后台框架图、前端工程师技能图 B2C电子商务基础系统架构解析...
http://zz563143188.iteye.com/blog/1877266在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样 ...
- Java中合法的关键词_优秀程序员必须掌握的java中50个关键字
关键字和保留字的区别 正确识别java语言的关键字(keyword)和保留字(reserved word)是十分重要的.Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表 ...
- java学习文档_资深程序员带你深入了解JAVA知识点,实战篇,PDF文档
JAVA 集合JAVA 集合面对浩瀚的网络学习资源,您是否为很难找到适合自己的学习资源而感到苦恼过?那么,您来对地方了.在这里我们帮助大家整理了一份适于轻松学习 Java 文章的清单.JVM 文字太多 ...
- java web swing 教程_好程序员Java教程解读什么是swing
原标题:好程序员Java教程解读什么是swing 好程序员Java教程解读什么是swing,swing是java GUI应用程序,也就是java做的桌面应用.运行swing程序要求用户电脑上有java ...
- java前台界面设计_前端程序员要懂的 UI 设计知识
前端程序员要懂的 UI 设计知识 疯狂的技术宅 前端先锋 翻译:疯狂的技术宅 作者:Per Harald Borgen 来源:freecodecamp 正文共:1401 字 预计阅读时间:5分钟 作为 ...
- java程序设计蜘蛛纸牌_介绍程序员玩纸牌
java程序设计蜘蛛纸牌 在玩扑克,二十一点和纸牌等经典纸牌游戏时,了解程序员的历史 (Learn about programmer history while you play classic ca ...
- 二叉树的字符图形显示程序_每个程序员都必须知道的8种通用数据结构
作者:IT-Evan https://www.cnblogs.com/IT-Evan/p/12444968.html 数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操 ...
最新文章
- 使用Python,OpenCV,dlib进行睡意检测(疲劳驾驶检测)
- Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记
- ubuntu mysql 安装
- IBM powerVM VIOS
- maven snapshot依赖 打包_Maven教程2:Maven项目构建过程练习
- e0266 cout 不明确_荐书 | 不正义的时代,识别不正义的多重面孔
- phpQuery乱码解决经验分享
- 架构-大数据架构-阿里
- android手机邮箱权限,Android手机邮箱设置方法
- let与var的区别(重点看例子)
- 28BYJ-48步进电机
- 前序、中序、后序表达式
- 永磁同步电机矢量控制中的双闭环是什么意思_STM32 TALK | 无感FOC方案原理机器控制难点分析...
- ARM处理器9种基本寻址方式,和单片机微机原理寻址方式截然不同,(例如没有直接地址寻址,只能间接指针寻址或者寄存器变址寻址,立即数寻址,不是所有立即数都可直接寻址)不可套用理解。需独立学习
- windows程序设计(3):窗口
- 如何在html中插入本地音乐
- 荣耀电脑怎样更改计算机名称,王者荣耀荣耀战区怎么修改别的地区?手机电脑改荣耀战区不封号操作方法[多图]...
- 合宙Air105|CRYPTO|加密与解密|算法|RSA|HASH函数| BASE64|MD5|SHA1|SHA256|CRC|官方demo|学习(4):CRYPTO(加密与解密)
- 天源财富:突破“极限”!我科学家发现迄今最高能量光子
- 数学建模番外篇8:画图配色