本文主要是介绍再论大端序与小端序(精华),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
又称大整数,可以存放任意大小的整数。
它的内部实现是把整数分成一个个较小的单位,通常是 uint32(无符号32位整数)或 uint64(无符号64位整数),按顺序组合在一起。
如果是大端序,第一个 u64 就是这个整数最大的部分。运算时,一旦这个数发生变化,需要进位,后面的所有位都必须移动和改写。小端序发生进位时,往往就不需要所有位移动。
小端序的另一个好处是,如果逐字节的运算从个位数开始(比如乘法和加法),可以从左到右依次运算一个个 u64,算完上一个再读取下一个。大端序就不行,必须读取整个数以后再进行运算。
八、更改类型
最后一个例子是,C 语言有一种 cast 操作,可以强制改变变量的数据类型,比如把32位整数强行改变为16位整数。
上图中,32位整数0x00000001更改为16位整数0x0001,大端序是截去前面两个字节,这时指向这个地址的指针必须向后移动两个字节。
小端序就没有这个问题,截去的是后面两个字节,第一位的地址是不变的,所以指针不需要移动。
九、总结
综上所述,大端序和小端序各自的优势如下。
如果需要逐位运算,或者需要到从个位数开始运算,都是小端序占优势。反之,如果运算只涉及到高位,或者数据的可读性比较重要,则是大端序占优势。
这篇关于再论大端序与小端序(精华)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!