gpt4 book ai didi

c++ - 设置最高有效位

转载 作者:行者123 更新时间:2023-12-04 15:56:23 26 4
gpt4 key购买 nike

我正在尝试根据 bool 标志切换 unsigned int 的最高有效位。这是我假设的 K = unit64_t 的代码:

这是 Item 类:

template<typename K>
class Item {
public:
K first;

Item() = default;
explicit Item(const K &elem, const bool flag = false) {
first = elem & 0x3FFFFFFFFFFFFFFF;
first |= (flag * 0x8000000000000000);
}
};

有没有办法做到这一点完全通用?它适用于所有类型的数字 K

我尝试使用 8 * sizeof(K) 但它不起作用。

最佳答案

仅使用位操作的选项:

template<typename T>
void Item(T& elem, bool flag = false) {
T mask = (T)1 << (sizeof(T) * 8 - 1);
elem = (elem & ~mask) | (flag ? mask : 0);
}

关于c++ - 设置最高有效位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69831693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com