What Does (~0L) Mean?

I'm doing some X11 ctypes coding, I don't know C but need some help understanding this.

In the C code below (might be C++ im not sure) we see (~0L) what does that mean? In Javascript and Python ~0 means -1.

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

Thanks

1

2 Answers

0L is a long integer value with all the bits set to zero - that's generally the definition of 0. The ~ means to invert all the bits, which leaves you with a long integer with all the bits set to one.

In two's complement arithmetic (which is almost universal) a signed value with all bits set to one is -1.

The reason for using ~0L instead of -1L is to be clearer about the intent - it's not meant to be used as a number at all, but rather as a collection of bits.

6

Bitwise compliment of zero of long type.

7

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

David Miller

David Miller

Executive Financial & Market Analyst

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.

Share this article
Twitter Facebook Pinterest