Advantage of using 0x01 instead of 1 for an integer variable?

后端 未结 4 1849
我在风中等你
我在风中等你 2020-12-16 12:44

Recently I came across a line like this

public final static int DELETION_MASK = 0x01;

why is it not like

4条回答
  •  执笔经年
    2020-12-16 13:29

    While there is not a difference in the code produced by the compiler, bit masks are traditionally written using the hexadecimal notation, because it's significantly easier for a human to convert to a binary form. Another common convention is to include the leading zeros when the length of the field is known. E.g. for a C int field, it's common to write:

    #define MASK 0x0000ffff
    

    In addition, hexadecimal constants indicate to the programmer that it's probably a bit mask, or a value that will be somehow involved in bitwise operations and should probably be treated specially.

    As a bonus, hexadecimal notations may also avoid issues with negative numbers: 0xffffffff is in fact a negative number (-1 to be exact). Rather than juggling with the sign and 2's-complement numbers you can just specify the mask in hexadecimal and be done with it.


    Since Java 7 you can also use binary literals which makes it even easier for a human to understand which bits are set in a bit mask. And binary literals may make use of underscores to put the bits into separate groups.

    That means that the following is also valid:

    public final static int DELETION_MASK = 0b0000_0001;
    

提交回复
热议问题