An *_*yễn 1 c++ bitwise-operators
我想在long long int64位机器上设置一个数字位.例如,我想在元素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
Run Code Online (Sandbox Code Playgroud)
但它不起作用.如果我这样做long int,它工作正常.
文字1有类型int,可能小于long long.如果你移动足够的位来溢出int类型,你将得到未定义的行为(通常值为零); 并且第二行将(可能)清除存在A1但不存在于int值中的任何位.
使用1LL指定long long类型,或decltype(A1)(1)指定匹配的类型A1.
通常,通常最好使用无符号类型(unsigned long long或者uint64_t在这种情况下)进行比特纠缠.使用1ULL得到一个文本类型的unsigned long long.
| 归档时间: |
|
| 查看次数: |
1192 次 |
| 最近记录: |