I know what's happening...
Your enum is defined as flags, but you are incorrectly assigning values to the flags, it should be:
[Flags]
public enum biomes : long
{
Radiated = 0x0,
Barred = 0x1,
Dead = 0x2,
Inferno = 0x4,
Dune = 0x8,
Desert = 0x10,
Minimal = 0x20,
Toxic = 0x40,
Savannah = 0x80,
Steppe = 0x100,
Tundra = 0x200,
Swamp = 0x400,
Jungle = 0x800,
Forest = 0x1000,
Frozen = 0x2000,
Ocean = 0x4000,
Terran = 0x8000,
Glacial = 0x10000
}
The hex values you were giving were actually combinations of other values. You don't multiply by 2 (you would if you were assigning decimal values), but when doing hex values, 8 * 2 = 0x10, not 0x16 for example. 0x16 is a combination of other values you probably didn't want.
OR you could just remove the 0x from the value, also, you should not use 0x0 as a flag value, since it literally means "no flags", 0x0 should always be "None", and start your values at 0x01.
Edit: here is how I would change it to make it easier to add habitable/inhabitable planets:
[Flags]
public enum Biomes
{
Habitable = 0x01,
Uninhabitable = 0x02,
Barred = 0x04 | Uninhabitable,
Dead = 0x08 | Uninhabitable,
Radiated = 0x10 | Uninhabitable,
Inferno = 0x20 | Uninhabitable,
Toxic = 0x40 | Uninhabitable,
Frozen = 0x80 | Uninhabitable,
Glacial = 0x100 | Uninhabitable,
Dune = 0x200 | Habitable,
Desert = 0x400 | Habitable,
Minimal = 0x800 | Habitable,
Savannah = 0x1000 | Habitable,
Steppe = 0x2000 | Habitable,
Tundra = 0x4000 | Habitable,
Swamp = 0x8000 | Habitable,
Jungle = 0x10000 | Habitable,
Forest = 0x20000 | Habitable,
Ocean = 0x40000 | Habitable,
Terran = 0x80000 | Habitable
}
Which makes it very clear from the enum (instead of defining it in the class) what is habitable and uninhabitable, and is a very good use for flags. You can also use shift operators like Sergey said in Solution 2, however I find that they are hit and miss as far as understand-ability. I prefer to use straight hex but your preference is your call.
Now your flag checking will work with any planet since you've defined them as a combination of flags. I think this is a better way than originally defined, since you only have to check for the Habitable or Uninhabitable flag to see if a planet is one or the other, rather than check for a certain combination of planets. This is also very maintainable (changing, for example, the Minimal planet from Habitable to Uninhabitable only requires a small change to the enum).