字节序
来源:互联网 发布:python subprocess pid 编辑:程序博客网 时间:2024/06/05 06:50
用一个short长度的位域结构体存储钱数。q代表10进制的千位,b百,s十,g个。
显然,这是个BCD码的应用。
struct X {
unsigned short q : 4;unsigned short b : 4;
unsigned short s : 4;
unsigned short g : 4;
};
计划是用每4个二进制位表示一个十进制位。最重大的m15~m11位就是千位。
//m15~m12 m11~m8 m7~m4 m3~m0// 千 百 十 个
void main() {
X x = { 0 };
short money = 0x1234;
memcpy(&x,&money,2);
}
最后得到的结果q=4,b=3, s=2, g=1,
在小端序的系统,最不重大的位m4~m0(小头),存在低地址(在前),最重大的m15~m11存放在高地址。
所以,内存中的存放为:
b0~b3 b4~b7 b8~b11 b12~b15
m0~m3 m4~m7 m8~m11 m12~m15
q b s g (而位域的定义,也是从低地址开始的(这一点,同数组一样:a[0]的地址比a[1]低))
4 3 2 1
解决的办法是:重新定义结构体
struct X {
unsigned short g: 4;unsigned short s : 4;
unsigned short b : 4;
unsigned short q : 4;
};
b0~b3 b4~b7 b8~b11 b12~b15
m0~m3 m4~m7 m8~m11 m12~m15
g s b q
4 3 2 1
1) 大小端序,在bit范围内,也是反的
例如:5 在大端序 是00000101 ; 在小端序 是10100000
2) 在语言层面,文字量是概念值,例如short a=0x05, 这是个概念值5,具体如何存储,由系统决定。
3)序列化是以字节为单位打散数据的,单字节在不同的系统之间传输,大小端的bit层级的转换是系统完成的。
但是多字节组合的对象,例如int等,需要用编程的手段做顺序调整。
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- 字节序
- (撤销)搬家通知!!!
- 无序容器
- NOIP 2004 提高组 复赛 alpha 虫食算
- fatal: refusing to merge unrelated histories 解决方案
- [乐意黎原创]PHP编译时configure: WARNING: unrecognized options: --with-mysql
- 字节序
- 安卓程序加载h5页面
- Python 函数详解
- 史上最全的java spring注解,没有之一
- Labyrinth 【迷宫图中 树的直径应用】
- Android 单例模式引起的内存泄露
- JSP基础增强
- Hibernate关于一对多 多对一 多对多关联关系的设置
- JVM