一、定义

在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的大小及一些特殊的高低位宏(取高位 取低位)相关推荐

  1. BYTE WORD DWORD

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

  2. Bit,Byte,Word,Dword,Qword

    八个比特(Bit)称为一个字节(Byte),两个字节称为一个字(Word),两个字称为一个双字(Dword),两个双字称为一个四字(Qword). [转载] 32位和64位CPU.操作系统的区别 + ...

  3. WORD数据类型数据类型及 Bit,Byte,WORD,DWORD区别和联系

    typedef unsigned short WORD; 16位短整数,可以表示0-65535之间的整数 而char是8位. int和机器类型有关.如16位机,就表示16位.32位机就表示32位 基本 ...

  4. bit,Byte,Word,DWORD(DOUBLE WORD,DW)

    1个二进制位称为1个bit,8个二进制位称为1个Byte,也就是1个字节(8位),2个字节就是1个Word(1个字,16位),则DWORD(DOUBLE WORD)就是双字的意思,两个字(4个字节/3 ...

  5. ARM64 BYTE/WORD/DWORD/QWORD 与 Wn/Xn

    BYTE,1个字节,8位,一般用Wn存储 WORD,2个字节,16位,一般用Wn存储 DWORD,4个字节,32位,一般用Wn存储 QWORD,8个字节,64位,一般用Xn存储

  6. 汇编BYTE,WORD,DWORD区别

    BYTE为1字节, WORD为2字节, DWORD为4字节

  7. 类型BYTE,WORD与DWORD

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

  8. 怎么压缩word文档大小?

    怎么压缩word文档大小?不管大家是在工作中使用电脑还是在学习中使用电脑,相信大家或多或少都会接触和使用到word文档,因为word是电脑上最通用的电脑文件,可以用它来编写很多工作文件或者学习论文.不 ...

  9. Word字体尺寸大小七十二变(转)

    Word字体尺寸大小七十二变(转) 在打印招牌广告.学习专栏时,常常要用到字号很大的标题.可就算在Word中选用最大的字体"初号"或 "72磅"字号,打印出来的 ...

最新文章

  1. React中的路由react-router
  2. c blowfish java,blowfish-golang加密与java解密
  3. mysql text blob_mysql的text/blob和行溢出
  4. 数据结构与算法---查找算法(Search Algorithm)
  5. WordPressmodown收费模板
  6. 何时弃用 MongoDB?| 技术头条
  7. 通过复制oracle软件方式安装oracle数据库
  8. JSONArray ja = JSONArray.fromObject(list);//特殊类 用于将list转化为JSON 数据并返回 out.print(ja);...
  9. miracast和乐播投屏_【当贝市场】Windows 10 Mircast投屏到电视教程
  10. 五步搞定Java性能调优(附超全技能图谱)
  11. 敌退我进 锂电产业链中日韩三国演义
  12. StyleBook皮肤控件的使用
  13. 校园多媒体直播系统方案
  14. java中subject类_RxJava中常见的几种Subject
  15. 2019牛客暑期多校训练营(第八场)B.Beauty Values
  16. linux账号密码延期90天命令,Linux(CentOS)用户修改密码有效期(chage命令)
  17. 倍福--授权文件拷贝
  18. powerDesigner 从postgresql数据库中绘制ER图
  19. flutter permission 问题
  20. MATLAB画折线图时自定义颜色

热门文章

  1. PowerShell批量设置PATH环境变量
  2. 阅读笔记:Solving the “false positives” problem in fraud prediction
  3. Docker1.12.1之swarm集群搭建与使用
  4. 使用Mock.js进行独立于后端的前端开发
  5. ActiveReports 报表应用教程 (2)---清单类报表
  6. Linux容器演变史
  7. “百度杯”CTF比赛 十月场 Hash 复现
  8. VS2015+MySql+EF6采坑经验总结
  9. 【274天】每日项目总结系列012(2017.11.06)
  10. 【邓侃】哈佛大学机器翻译开源项目 OpenNMT的工作原理