c++ - 从 64 位整数中逐位提取
问题描述
知道如何在 C++ 中为 uint64_t 整数执行此操作。经过一些研究,我发现我需要将带有一些掩码的整数与该位设置为 1。
所以如果我想要从右边开始的第 50 位,我应该只用 2^50。
还有任何想法如何设置特定位。如果我使用指数,我认为这将是一项昂贵的操作。
解决方案
查找位移运算符:<<
, >>
. 你至少可以通过两种方式做到这一点:
value&(uint64_t(1)<<50)
:这给出 0 或 2 50(value>>50)&1
: 这给出 0 或 1
推荐阅读
- ms-access - 将子表单保存过程链接到父表单保存按钮
- webpack - Webpack中设置两个环境变量的目的
- qlikview - 过去 12 个月的 QlikView 表达式 & DISTINCT & 未因选择而改变
- spring-boot - Spring Boot 中的 Mockito ElasticSearch 单元测试
- php - 使用 eloquent 检索由 SQL LIKE 运算符组成的集合
- java - 以对象为键、整数为值对 Hashmap 进行排序
- elasticsearch - Rails,searchkick(Elasticsearch 2.3)完成提示错误
- python - f-score:ValueError:分类指标无法处理多标签指标和连续多输出目标的混合
- javascript - 从显示为 Object 对象的 XML 检索数据
- encryption - NFC 通信 - Mifare DESFire EV1 - AES - 读取数据