BYTE,WORD,DWORD的大小及一些特殊的高低位宏(取高位 取低位)
一、定义
在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的大小及一些特殊的高低位宏(取高位 取低位)相关推荐
- BYTE WORD DWORD
一.定义 在VC6.0的Microsoft Visual Studio/VC98/Include/windef.h 里,定义了BYTE,WORD,DWORD typedef unsigned long ...
- Bit,Byte,Word,Dword,Qword
八个比特(Bit)称为一个字节(Byte),两个字节称为一个字(Word),两个字称为一个双字(Dword),两个双字称为一个四字(Qword). [转载] 32位和64位CPU.操作系统的区别 + ...
- WORD数据类型数据类型及 Bit,Byte,WORD,DWORD区别和联系
typedef unsigned short WORD; 16位短整数,可以表示0-65535之间的整数 而char是8位. int和机器类型有关.如16位机,就表示16位.32位机就表示32位 基本 ...
- 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 ...
- ARM64 BYTE/WORD/DWORD/QWORD 与 Wn/Xn
BYTE,1个字节,8位,一般用Wn存储 WORD,2个字节,16位,一般用Wn存储 DWORD,4个字节,32位,一般用Wn存储 QWORD,8个字节,64位,一般用Xn存储
- 汇编BYTE,WORD,DWORD区别
BYTE为1字节, WORD为2字节, DWORD为4字节
- 类型BYTE,WORD与DWORD
做程序最烦人的就是碰到,程序没什么语法错误,编译通过,运行也通过,就是不出结果的情况.昨晚晕晕乎乎的搞了三个小时,没搞出来的程序,就刚才一小会的功夫就看出来了,原来是数据类型搞错了.本来该是DWORD ...
- 怎么压缩word文档大小?
怎么压缩word文档大小?不管大家是在工作中使用电脑还是在学习中使用电脑,相信大家或多或少都会接触和使用到word文档,因为word是电脑上最通用的电脑文件,可以用它来编写很多工作文件或者学习论文.不 ...
- Word字体尺寸大小七十二变(转)
Word字体尺寸大小七十二变(转) 在打印招牌广告.学习专栏时,常常要用到字号很大的标题.可就算在Word中选用最大的字体"初号"或 "72磅"字号,打印出来的 ...
最新文章
- React中的路由react-router
- c blowfish java,blowfish-golang加密与java解密
- mysql text blob_mysql的text/blob和行溢出
- 数据结构与算法---查找算法(Search Algorithm)
- WordPressmodown收费模板
- 何时弃用 MongoDB?| 技术头条
- 通过复制oracle软件方式安装oracle数据库
- JSONArray ja = JSONArray.fromObject(list);//特殊类 用于将list转化为JSON 数据并返回 out.print(ja);...
- miracast和乐播投屏_【当贝市场】Windows 10 Mircast投屏到电视教程
- 五步搞定Java性能调优(附超全技能图谱)
- 敌退我进 锂电产业链中日韩三国演义
- StyleBook皮肤控件的使用
- 校园多媒体直播系统方案
- java中subject类_RxJava中常见的几种Subject
- 2019牛客暑期多校训练营(第八场)B.Beauty Values
- linux账号密码延期90天命令,Linux(CentOS)用户修改密码有效期(chage命令)
- 倍福--授权文件拷贝
- powerDesigner 从postgresql数据库中绘制ER图
- flutter permission 问题
- MATLAB画折线图时自定义颜色
热门文章
- PowerShell批量设置PATH环境变量
- 阅读笔记:Solving the “false positives” problem in fraud prediction
- Docker1.12.1之swarm集群搭建与使用
- 使用Mock.js进行独立于后端的前端开发
- ActiveReports 报表应用教程 (2)---清单类报表
- Linux容器演变史
- “百度杯”CTF比赛 十月场 Hash 复现
- VS2015+MySql+EF6采坑经验总结
- 【274天】每日项目总结系列012(2017.11.06)
- 【邓侃】哈佛大学机器翻译开源项目 OpenNMT的工作原理