从两个 8 位值中找到 14 位值的函数的反面是啥?

Posted

技术标签:

【中文标题】从两个 8 位值中找到 14 位值的函数的反面是啥?【英文标题】:What would be the opposite of this function to find 14bit value from two 8bit values?从两个 8 位值中找到 14 位值的函数的反面是什么? 【发布时间】:2012-06-05 05:18:39 【问题描述】:

以下取两个 8bit 整数,将它们组合生成一个 14bit 整数。

    public static int CombineBytes(int LSB, int MSB)
    
        int _14bit;

        _14bit = MSB;
        _14bit <<= 7;
        _14bit |= LSB;

        return(_14bit);
    

这个函数的相反过程是什么?

例如,如果我提供了一个 14 位整数的函数,我会得到两个 8 位整数,分别是最高有效字节和最低有效字节?

【问题讨论】:

你的意思是两个 7 位整数吗? 绝对是 8 位。范围必须是 [0, 127] 或 128 个可能的值,因此是 2^8 或 8bit。 0 到 127 只需要 7 位。 8 位将是一个完整字节,因此范围是从 0 到 255。2^7 = 128, 2^8 = 256 累了,不想思考是我的借口。我会尝试实施您的回答,谢谢。 【参考方案1】:

假设您的意思是两个 7 位整数,您可以通过将 7 右移 high = combined &gt;&gt; 7 来获得高 7 位,并通过二进制和 low = combined &amp; 0x7F 进行掩码来获得低 7 位。

【讨论】:

以上是关于从两个 8 位值中找到 14 位值的函数的反面是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 SIMD 根据另一个向量位值计算值的乘积

将 16 位值的 __m256i 打包(饱和)到 8 位值的 __m128i?

是否有用于 16 和/或 32 位值的 memset() 函数?

SSE指令:字节+短

MAD+异常检测

并行/组合多个 64 位值的按位排列