符号将11位扩展到32位
Sign extend 11 bits to 32 bits
如何签名将11位数字扩展到C 中的32位数字?
我有以下功能,但它没有按预期返回适当的签名扩展:
unsigned int signExtend11to32ui(int i) {
int mask = 2047; // 0x7FF or 0000 0111 1111 1111
return static_cast<unsigned int>(static_cast<int>(i & mask));
}
以下功能可以正确地适用于16位至32位的签名:
unsigned int signExtend16to32ui(short i) {
return static_cast<unsigned int>(static_cast<int>(i));
}
由于左右偏移是算术在C 中,因此您可以正确移动整数到最重要的INT,然后返回:
std::int32_t i = 2047;
i = (i << 21) >> 21;
这将-1置于 i
相关文章:
- 将应用程序从32位移植到64位时出现问题
- C++中的24位到32位转换
- 将代码从 32 位迁移到 64 位时出现问题 Visual Studio 2010
- 如何使用Canny到32位灰度
- 将 1 添加到 32 位的位集
- 十进制,包括负到 32 位二进制转换器
- 使用 AVX2 将 8 位从 32 位值 (__m256i) 解压缩到__m256的最快方法
- 如何将C++项目从 32 位迁移到 64 位以支持 MAC OS 10.14(莫哈韦)?
- 32位到64位:LNK2019错误,如何检索相关信息
- 如何从 Linux 交叉编译到 32 位 Windows 可执行文件
- 将 32 位旧代码移植到 64 位时如何处理更改数据类型大小?
- Visual C 32位整数从文件到8位字符到文件 - 程序在某些整数上崩溃
- 符号将11位扩展到32位
- 在64位Debian上交叉编译32位时找不到Libpcap
- 将Windows上32位和64位的Boost构建到同一文件夹中
- qt_version_major编译到32位时未声明
- 使用Solaris 64位或Linux 32位到Linux 64位的内存映射文件
- Excel插件错误从WindowsXP 32位移动到Windows7 64位
- 从32位c++到64位c++,使用Visual Studio 2010
- 从32位迁移到64位后,DoModal静默崩溃