从两个 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 >> 7
来获得高 7 位,并通过二进制和 low = combined & 0x7F
进行掩码来获得低 7 位。
【讨论】:
以上是关于从两个 8 位值中找到 14 位值的函数的反面是啥?的主要内容,如果未能解决你的问题,请参考以下文章
将 16 位值的 __m256i 打包(饱和)到 8 位值的 __m128i?