小端模式与强制数据类型转换
小端模式与强制数据类型转换
1.先从一个问题说开去
相关阅读: C++数据类型转换的问题 [plain]- #include <iostream.h>
- void main()
- {
- int i=0xb62;
- char c;
- c=i;
- cout<<c<<endl;
- }
2.先检测一下我们所使用的电脑的CPU的字节序
版本一(有问题,结果无论如何都是34,不能说明34是高地址的还是低地址的)版本二(根据 shineyan1991的留言修改后得到的,在此谢谢 shineyan1991的建议)
从上图可知,CPU的字节序是小端模式。
知识点
小端模式(Little-Endian)
数据类型中的高位数据存放于高地址部分,低位数据存放于低地址部分。简而言之:高位在后,低位在前。
大端模式(Big-Endian)
数据类型中的高位数据存放于低地址部分,低位数据存放于高地址部分。简而言之:高位在前,低位在后。
3.初步分析
0xb62是十六进制,因为char是一个字节的,所以我们只取低8位(丢弃了高字节,而保留了低字节),这是和语言有关,和CPU的架构无关,一个十六进制位转换为4个二进制位,所以,低8位就是62转换的,就是01100010,传递给char后,char的值就是98,根据ASCII,就会输出b。
|
评论暂时关闭