读书人

quot;0x00000020quot;是什么意思?该如何解决

发布时间: 2012-03-15 11:50:38 作者: rapoo

"0x00000020"是什么意思?
有一个头文件中,定义有如下的两个宏
#define EXT_INDEXER_OUTFILE_INDEXER 0x00020000
#define EXT_INDEXER_SYNERGY_OUTPUT 0x00000020
在另外一个文件中,有如下语句:
int ix_mode = EXT_INDEXER_OUTFILE_INDEXER | EXT_INDEXER_SYNERGY_OUTPUT ;

请问
1. 0x00020000 到底是什么? 是16位数吗? 如果是,那为什么不直接写成0x20000? 如果不是,那它是什么?

2. 下面的语句是什么结果? | 是什么意思? 位运算?
int ix_mode = EXT_INDEXER_OUTFILE_INDEXER | EXT_INDEXER_SYNERGY_OUTPUT ;

3. 通常大家会在什么时候用到这样的程序? 我指如下程序:

#define EXT_INDEXER_OUTFILE_INDEXER 0x00020000
#define EXT_INDEXER_SYNERGY_OUTPUT 0x00000020
int ix_mode = EXT_INDEXER_OUTFILE_INDEXER | EXT_INDEXER_SYNERGY_OUTPUT ;

[解决办法]
需设置多个模式的时候,而有想不浪费空间,所以用位运算
[解决办法]
0x00020000

因为 一个整数, int 或者 long 在 32位平台下,
默认是 4 字节的, 所以写成0x00020000 形式,
高位的 0 也可以不要的,
直接写成0x20000 效果一样, 但是看起来就不一样了(几个字节就需要数一下)
[解决办法]
1.是16进制数.之所以要这么写,估计是该程序运行在32位机器上,刚好能表示8位16进制数.
2.是或的结果,位运算.0x00020020
3.通常会在定义常量时,用不着满天去寻找我在程序中哪里用过0x00020000.
[解决办法]
1. 0x00020000 到底是什么? 是16位数吗? 如果是,那为什么不直接写成0x20000? 如果不是,那它是什么?
答:0x00020000等于0x20000。

2. 下面的语句是什么结果? | 是什么意思? 位运算?
int ix_mode = EXT_INDEXER_OUTFILE_INDEXER | EXT_INDEXER_SYNERGY_OUTPUT ;
答:按位或操作,一般用于标志位的设置,在嵌入式系统编成中用得很多。

3. 通常大家会在什么时候用到这样的程序?
答:一般在设置标志时,使用这种咚咚。
[解决办法]
3. 通常大家会在什么时候用到这样的程序?

一些标志,
比如错误标志,
一个位代表一种错误,
比如0x1 是溢出
0x02是 域出错
0x04是...

这样,
通过一个位代表一种错误,
那么位运算就可以综合多种错误类型的反馈了
[解决办法]
大写变小写的时候可以用 A|0x00000020
[解决办法]
decimal(32)的意思...

读书人网 >C++

热点推荐