首页 > 解决方案 > 从 64 位整数中逐位提取

问题描述

知道如何在 C++ 中为 uint64_t 整数执行此操作。经过一些研究,我发现我需要将带有一些掩码的整数与该位设置为 1。

所以如果我想要从右边开始的第 50 位,我应该只用 2^50。

还有任何想法如何设置特定位。如果我使用指数,我认为这将是一项昂贵的操作。

标签: c++bit-manipulation

解决方案


查找位移运算符:<<, >>. 你至少可以通过两种方式做到这一点:

  • value&(uint64_t(1)<<50):这给出 0 或 2 50
  • (value>>50)&1: 这给出 0 或 1

推荐阅读