Chinaunix首页 | 论坛 | 博客
  • 博客访问: 426612
  • 博文数量: 72
  • 博客积分: 1583
  • 博客等级: 上尉
  • 技术积分: 775
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-23 09:36
文章分类

全部博文(72)

文章存档

2011年(72)

我的朋友

分类: WINDOWS

2011-03-08 14:56:14

LONGLONG 0到(264次方-1

LONGLONG llvalue=100i64

 

typedef  union _LARGE_INTEGER{

       struct {

              ULONG LowPart; //32位的整数

              LONG HighPart; //32位的整数

    }

       struct {

              ULONG LowPart;//32位的整数

              LONG HighPart;//32位的整数

    } u;

    LONGLONG QuadPart;

}LARGE_INTEGER;

如果你的编译器内置支持64位整型,使用QuadPart成员来存储64位整型数值。否则,       使用LowParHighPart成员来存储64位整型数值

将这个64位的整数赋值为100

1)      Little endian

LARGE_INTEGER LargeValue

LargeValue.LowPart=100;

LargeValue.HighPart=0;

 

2)      Big endian

LARGE_INTEGER LargeValue

LargeValue.u.LowPart=100;

LargeValue.u.HighPart=0;

 

3 LARGE_INTEGER LargeValue

    LargeValue. QuadPart =100i64

我们知道一个基本存储单元可以保存一个字节每个存储单元对应一个地址。对于大于十进制25516进制0xff)的整数,需要多个存储单元。例如,4660对应于0x1234,需要两个字节。不同的计算机系统使用不同的方法保存这两个字节。在我们常用的PC机中,低位的字节0x34保存在低地址的存储单元,高位的字节0x12保存在高地址的存储单元;而在Sun工作站中,情况恰恰相反,0x34位于高地址的存储单元,0x12位于低地址的存储单元。前一种就被称为Little Endian,后一种就是Big Endian

如果我们将0x1234abcd(高位字节12)写入到以0x0000开始的内存中,则结果为
           big-endian        little-endian
0x0000     0x12              0xcd
0x0001     0x34              0xab
0x0002     0xab              0x34
0x0003     0xcd              0x12

 

 

阅读(1978) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~