如何设置,在C/C++中清除一个长整型数

How to set, clear a bit of a long long int number in C/C++?

本文关键字:清除 一个 长整型 C++ 何设置 设置      更新时间:2023-10-16

我想在64位机器上设置long long int数字中的位。例如,我想在元素18 19处设置位,我使用以下代码:

A1 |= 1 << 2 * i;  // i = 9 , set bit 18 =1, A1 long long int
A1 &= ~(1 << 2 * i + 1); //clear bit 19 = 0

但它不起作用。如果我为long int这样做,效果会很好。

文字1的类型为int,可能小于long long。如果偏移足够的位使int类型溢出,则会得到未定义的行为(通常为零值);并且第二行将(可能)清除CCD_ 7中存在但不清除int值中存在的任何位。

使用1LL指定long long类型,或使用decltype(A1)(1)指定与A1匹配的类型。

通常,最好使用无符号类型(在这种情况下可能是unsigned long longuint64_t)进行位争用。使用1ULL获取类型为unsigned long long的文字。