c - 位移超过 C 中类型的宽度
问题描述
我有一个名为 vpn 的 uint64_t 变量,我正在尝试获取它的左 9 位。我知道 vpn 有 45 位长,所以我尝试了以下方法:
uint64_t nineMSB = (vpn & (511 << 36)) >> 36;
但我收到以下警告:
left shift count >= width of type
这是为什么?511 是二进制的 9 个,所以 511 << 36 应该给我 45 位,我正在使用 uint64_t 进行与运算,因此结果不应超过 64 位。
谢谢!
解决方案
推荐阅读
- php - GraphQL 查询未从 Laravel 返回任何内容
- ag-grid - AG-grid 刷新固定行的总计
- c - 我正在尝试编写一个 C 代码来对字符串进行排序,但在第 13 行总是显示一条错误消息
- google-maps - 需要帮忙!如何使用它的 API 选择特定的多边形以在谷歌地图上绘制。融合表中的数据
- angular6 - DropBox Saver:按钮未显示。(角度 6)
- angular - 如何从Angular 6中的父组件调用子组件的方法
- r - 为特定值添加面板数据序列
- google-cloud-platform - 如何通过服务帐户使用 gcloud?
- wordpress - Wordress 前端帖子类别数组
- sha1 - 我正在使用 C# 编写 3DES(使用 SHA1 HASH)加密算法。密钥大小错误