Как стать автором
Обновить

Комментарии 5

WelcomeScreenEnabled = 1 << 41 ;

правильно : WelcomeScreenEnabled = 1L << 41;

Результат будет: 2199023255552.

Работает до 1L << 62 = 4611686018427387904, дальше отрицательные значения

1L << 63 = -9223372036854775808.

Просто буквально на днях втыкался в эту ошибку, там величина сдвига определялась при вычислениях, и получалась 1. А можно так:

WelcomeScreenEnabled = 1UL << 63;

Получим: 9223372036854775808;

О да, с этими штуками нужно держать ухо востро).

Но, кстати, в плане enum-ов, наверное, главное, чтобы битовое представление было ожидаемым.

System.Convert.ToString(a, 2) не работает для ulong а.

Спасибо, буду знать чего не стоит делать.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий