字节序列
来源:互联网 发布:b碗动作数据 编辑:程序博客网 时间:2024/05/16 06:03
date: 2016-08-18 9:25:00
title: 字节序列
categories: 《深入理解计算机系统》读后感
版权声明:本站采用开放的[知识共享署名-非商业性使用-相同方式共享 许可协议]进行许可
所有文章出现的代码,将会出现在我的github中,名字可以根据类全名来找,我在github中的文件夹也会加目录备注。
对于跨越多个字节的程序对象有两个重要的规则:
该程序对象在虚拟内存中的地址
存储器如何排列这些字节
排列字节的方法
大端法
部分机器对于字节的排序,把最高有效位–>最低有效位 从左到右排序,比如一位刚好是8的倍数的字节数,将被分成一个字节组:
{10110101}
[x7,x6,x5,x4,x3,x2,1.x0]
x7为最高有效位,x0为最低有效位,这种字节排序的方法称为大端法
小端法
字节序列与大端法相反,即{x0,x1,x2,x3,x4,x5,x6,x7}
{10101101}
x0为最低有效位,x7为最高有效位,这种方法叫做小端法
关于我们应该使用哪种字节排序,只要我们由始至终只坚持一种排序方法即可。没有技术的原因来甄别两种排序方法,无论使用哪一种,对于性能来说都没有优劣之分,就像《格列佛游记》中对于从哪一端打开一个鸡蛋一样:
在一般情况下,字节的序列对于程序员来说显得不那么重要,因为我们平常在编程时,不论使用哪一种字节序列,编译后运行的结果都是一样的,但是当下面几种情况时,字节序列却显得非常重要:
在网络传输时
- 当我们使用的机器对于字节排序使用的是小端法,可是通过网络传输时,使用大端法排序的机器得到字节序列,这时就需要遵守相应的网络传输标准,让字节序列在进行网络传输之前,先按标准转换成标准序列,然后要获取的机器首先得到标准的序列,再将标准序列转换成自己机器的排序方法。
对机器级程序中整数数据进行阅读时
- 我们通常书写字节序列时,使用的是大端法,即最高有效位–>最低有效位是按从左到右的顺序,但是当我们阅读使用反编译工具对于程序进行反编译时,阅读使用小端法排序字节产生的代码时,看到的字节序列是与我们书写习惯相反的。
强制类型转换
- 在编程时对某一个类型的数据进行强制类型转换,那么被转换的变量将不会按照其被定义的类型规则进行排序,会按照被转换之后类的类型进行排序,此时使用大端法和小端法得到的结果将完全不同,具体例子可以通过下面的练习题。
练习题:
参考答案:
阅读全文
0 0
- 字节序列
- 网络字节序列,本机字节序列
- 主机字节序列和网络字节序列
- 计算机字节序列问题
- 主机字节序和网络字节序列
- 字符串转换成字节序列
- 十六进制字符串转字节序列
- iOS网络字节序列转换
- 1 字节的 UTF-8 序列的字节 1 无效
- 2 字节的 UTF-8 序列的字节 2 无效
- 2 字节的 UTF-8 序列的字节 2 无效
- 3 字节的 UTF-8 序列的字节 3 无效。
- 3 字节的 UTF-8 序列的字节 3 无效
- 1字节的UTF-8序列的字节1无效
- 1字节的UTF-8序列的字节1无效
- 3 字节的 UTF-8 序列的字节 3 无效
- 3 字节的 UTF-8 序列的字节 3 无效
- 1字节的UTF-8序列的字节1无效
- UVa10934
- SpringBoot31-springboot开发部署与测试-开发热部署和常规部署
- leetcode13
- Shiro入门学习五
- JAVA8的简单列子
- 字节序列
- 什么是跨域,如何解决基本的跨域问题?
- 支配树[模板]
- PHP-AMQP实践应用
- JVM调优
- JSP状态管理
- JDBC---连接数据库
- Integer 数值范围在-128~127之间时分别使用 ==和 equals进行比较
- http协议中的1XX,2XX,3XX,4XX,5XX