术语:什么是面具,什么是旗帜
Terminology: What's a mask and what's a flag
我没有接受过编程方面的教育,我是自学的。但是我在网上找不到的是旗帜和面具有什么区别。
我理解按位运算符的逻辑,只是不懂术语。
例如:
int READ_BIT_POSITION = 0x1; // is this a mask?
int WRITE_BIT_POSITION = 0x2; // is this a mask?
int bits = //..// // is this a flag (or flags)?
int read = bits & READ_BIT_POSITION; // or is this a flag?
抱歉这个菜鸟问题。
标志通常是一个字中的一位。
掩码通常是一个或多个位,用于从字中删除其他位。
可能会有一些重叠,例如在某些情况下,单个位可以用作标志或掩码。但是,不能将设置了多个位的掩码描述为标志。
在你的例子中:
int read = bits & READ_BIT_POSITION;
READ_BIT_POSITION
被用作单个位 mask 这将导致 read
包含 1 位 flag 从 bits
中提取(并排除它可能包含的任何其他位)。
掩码定义您感兴趣(或不感兴趣)的值中的位。标志是该值中代表某物的一个或多个位。
您使用掩码 read/write 标志值。例如如果你在墙上画字,面具就是你用来标记字符去向的纸模板,而旗帜就是你想在墙上画的确切字符。
我没有接受过编程方面的教育,我是自学的。但是我在网上找不到的是旗帜和面具有什么区别。
我理解按位运算符的逻辑,只是不懂术语。
例如:
int READ_BIT_POSITION = 0x1; // is this a mask?
int WRITE_BIT_POSITION = 0x2; // is this a mask?
int bits = //..// // is this a flag (or flags)?
int read = bits & READ_BIT_POSITION; // or is this a flag?
抱歉这个菜鸟问题。
标志通常是一个字中的一位。
掩码通常是一个或多个位,用于从字中删除其他位。
可能会有一些重叠,例如在某些情况下,单个位可以用作标志或掩码。但是,不能将设置了多个位的掩码描述为标志。
在你的例子中:
int read = bits & READ_BIT_POSITION;
READ_BIT_POSITION
被用作单个位 mask 这将导致 read
包含 1 位 flag 从 bits
中提取(并排除它可能包含的任何其他位)。
掩码定义您感兴趣(或不感兴趣)的值中的位。标志是该值中代表某物的一个或多个位。
您使用掩码 read/write 标志值。例如如果你在墙上画字,面具就是你用来标记字符去向的纸模板,而旗帜就是你想在墙上画的确切字符。