Подтвердить что ты не робот

Что означает (~ 0L)?

Я делаю кодировку типа X11, я не знаю C, но мне нужна помощь в этом.

В приведенном ниже коде C (может быть, С++ im not sure) мы видим (~0L) что это значит? В Javascript и Python ~0 означает -1.

812   int result = GetProperty(window, property_name,
813                            (~0L), // (all of them)
814                            &type, &format, &num_items, &properties);

Спасибо

4b9b3361

Ответ 1

0L - это целочисленное значение long со всеми битами, установленными в ноль, - что обычно определение 0. ~ означает инвертировать все биты, что оставляет вас с целым числом long со всеми битами, установленными в единицу.

В двухрядной арифметике (которая почти универсальна) знаковое значение со всеми битами, установленными в единицу, равно -1.

Причиной использования ~0L вместо -1L является более четкое представление о намерении - оно не предназначено для использования как число вообще, а скорее как набор бит.

Ответ 2

Побитовый комплимент нуля длинного типа.