什么(~0L)是什么意思?

我正在做一些X11 ctypes编码,我不知道C但需要一些帮助来理解这一点。

在下面的C代码中(可能是C ++我不确定)我们看到(~0L)这是什么意思? 在Javascript和Python中~0表示-1

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

谢谢

0L是一个long整数值,所有位都设置为零 – 通常定义为0~表示反转所有位,这会留下一个long整数,所有位都设置为1。

在二进制补码算法(几乎是通用的)中,所有位设置为1的有符号值为-1

使用~0L而不是-1L的原因是为了更清楚地意图 – 它根本不是用作数字,而是用作比特的集合。

按位式补充长型零。