有简洁的方法在C中创建位掩码吗?

Lee*_*ton 3 c readability bit-manipulation bit-masks

我需要创建三个32位的掩码unsigned ints(让我们称之为x,y和z).面具应该像这样结束:

x: 0000 0001 1111 1111 1111 1111 1111 1111
y: 0000 1110 0000 0000 0000 0000 0000 0000
z: 1111 0000 0000 0000 0000 0000 0000 0000
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有这个:

unsigned int x = (1<<25)-1;
unsigned int y = (~x)&((1<<28)-1);
unsigned int z = (~x)<<3;
Run Code Online (Sandbox Code Playgroud)

但它似乎有点凌乱.任何人都可以提出更简洁(和可读)的方式吗?

wor*_*rty 9

unsigned int x = 0x01FFFFFF,
             y = 0x0E000000,
             z = 0xF0000000;
Run Code Online (Sandbox Code Playgroud)

这对你来说可读吗?