BYTE,WORD,DWORD的大小及一些特殊的"高低位宏"

转载 2011年07月07日 23:32:12

一、定义

在VC6.0的Microsoft Visual Studio/VC98/Include/windef.h 里,定义了BYTE,WORD,DWORD

typedef unsigned long       DWORD;

typedef unsigned char       BYTE;

typedef unsigned short      WORD;

在Visual C++ 6.0中,char型长度为1字节,short型长度为2字节,int和long型长度都为4字节,因此可以认为BYTE与WORD,DWORD定义的变量分别获得了1字节,2字节,4字节内存,正与BYTE与WORD,DWORD的字面意义相符。

即:

BYTE=unsigned char(完全等同):       8位

WORD=unsigned short(完全等同):  16位

DWORD=unsigned long(完全等同): 32位

 

 

 

下面是一些平时用得比较少的宏:

二、Window 宏

1.LOBYTE( 从给定16位值中提取低位字节)

BYTE LOBYTE(

  WORD wValue  // value from which low-order byte is retrieved

);

#define LOBYTE(w)   ((BYTE) (w))

如:WORD w=-0x1234;//w在内存中以补码形式存储:0xedcc,即0xcc(低地址) 0xed(高地址)

printf("w的低位字节:%x/n",LOBYTE(w));//输 出:w的低位字节:cc

 

2.HIBYTE( 从给定16位值中提取高位字节)

BYTE HIBYTE(

  WORD wValue  // value from which high-order byte is retrieved

);

#define HIBYTE(w)   ((BYTE) (((WORD) (w) >> 8) & 0xFF))

如:printf("w的高位字节:%x/n",HIBYTE(w));// 输出:w的高位字节:ed

 

3.LOWORD(从给定32位值中提取低位word)

WORD LOWORD(

  DWORD dwValue  // value from which low-order word is retrieved

);

#define LOWORD(l)   ((WORD) (l))

如: DWORD l = 0x12345678;//l在内存中存储为:0x78,0x56,0x34,0x12

printf("l的低位字:%x/n",LOWORD(l));// 输出:l的低位字:5678

 

4.HIWORD(从给定32位值中提取高位word)

WORD HIWORD(

  DWORD dwValue  // value from which high-order word is retrieved

);

#define HIWORD(l)   ((WORD) (((DWORD) (l) >> 16) & 0xFFFF))

如:printf("l的高位字:%x/n",HIWORD(l));//输出:l的高位字:1234

5.MAKEWORD(将两个给定的无符号字符值连接成为一个16位整数)

WORD MAKEWORD(

  BYTE bLow,  // low-order byte of short value

  BYTE bHigh  // high-order byte of short value

);

#define MAKEWORD(a, b) /

((WORD) (((BYTE) (a)) | ((WORD) ((BYTE) (b))) << 8))

如: BYTE bLow=0x34,bHigh=0x12;

printf("MAKEWORD(%x,%x)=%x/n",bLow,bHigh,MAKEWORD(bLow,bHigh));

输出结果为: MAKEWORD(34,12)=1234

 

6.MAKELONG(将两个给定的16位值连接成为一个32位整数)

DWORD MAKELONG(

  WORD wLow,  // low-order word of long value

  WORD wHigh  // high-order word of long value

);

#define MAKELONG(a, b) /

    ((LONG) (((WORD) (a)) | ((DWORD) ((WORD) (b))) << 16))

 

如:WORD vLow=0x5678,vHigh=0x1234;

printf("MAKELONG(%x,%x)=%x/n",vLow,vHigh,MAKELONG(vLow,vHigh));

输出结果:MAKELONG(5678,1234)=12345678

BYTE,WORD,DWORD的大小及一些特殊的"高低位宏"(取高位 取低位)

一、定义 在VC6.0的Microsoft Visual Studio/VC98/Include/windef.h 里,定义了BYTE,WORD,DWORD typedef unsigned lo...
  • whatday
  • whatday
  • 2016-06-07 11:13:45
  • 1880

BYTE WORD DWORD详解

解释: BYTE:unsigned char           1个字节  范围2^8-1即0-255 WORD:unsigned short。    2个字节 范围2^16-1 即0-65535 ...
  • w328097846
  • w328097846
  • 2016-11-29 09:48:44
  • 1080

类型BYTE,WORD与DWORD

做程序最烦人的就是碰到,程序没什么语法错误,编译通过,运行也通过,就是不出结果的情况。昨晚晕晕乎乎的搞了三个小时,没搞出来的程序,就刚才一小会的功夫就看出来了,原来是数据类型搞错了。本来该是DWORD...
  • phenixyf
  • phenixyf
  • 2012-08-07 10:05:53
  • 2070

 DWORD WORD BYTE 相互转换

DWORD WORD BYTE 相互转换      DWORD  4个字节   WORD     2个字节   BYTE       1个字节   1) DWORD--->WORD ...
  • shuilan0066
  • shuilan0066
  • 2012-05-08 17:19:14
  • 11591

类型解析符(BYTE,WORD,DWORD)

使用vc经常会碰到使用MAKEWORD,LOWORD,LOBYTE等的情况,那么分析一下吧! 一.类型解析符(BYTE,WORD,DWORD) 学过汇编应该知道,一个数据过来了,其到底代表什么,需...
  • likaibs
  • likaibs
  • 2015-01-07 13:55:56
  • 607

bit,byte,half-word,word,dword的联系

bit:位 byte:字节 word:字长 half-word:半字 dword:双字 1 word = 2 byte 1 byte = 8 bit  1 dword = 4 byte ...
  • qq395740774
  • qq395740774
  • 2012-06-10 22:19:19
  • 1334

wndows头文件中提供的位运算宏及地址强转操作符的小节(BYTE,WORD,DWORD,MAKEWORD,LOWORD,LOBYTE.....)

使用vc经常会碰到使用MAKEWORD,LOWORD,LOBYTE等的情况,那么分析一下吧! 一.类型解析符(BYTE,WORD,DWORD)学过汇编应该知道,一个数据过来了,其到底代表什么,需要我们...
  • yacper
  • yacper
  • 2010-01-08 15:54:00
  • 3155

BYTE WORD DWORD

BYTE  8位 WORD  16位 DWORD 32位 汇编语言的保留字
  • hutao1101175783
  • hutao1101175783
  • 2014-11-26 16:38:44
  • 462

BYTE WORD DWORD

 一、定义在VC6.0的Microsoft Visual Studio/VC98/Include/windef.h 里,定义了BYTE,WORD,DWORDtypedef unsigned long ...
  • zhangyang0402
  • zhangyang0402
  • 2008-12-13 12:33:00
  • 4503

关于如何获得截取byte[]的高低位?

最近利用CH340B串口进行Android端的软件开发,通讯协议中要求使用拼接byte[]来进行指令的发送,其中涉及到了类型转换和byte高低位的截取,这里小结一下。 由于发送指令参数是int型数据,...
  • xiaoxun2802
  • xiaoxun2802
  • 2017-07-11 10:00:55
  • 458
收藏助手
不良信息举报
您举报文章:BYTE,WORD,DWORD的大小及一些特殊的"高低位宏"
举报原因:
原因补充:

(最多只允许输入30个字)