C ++按位运算,最大值为12位int

时间:2015-03-06 02:33:03

标签: c++ bit

因此12位int的最大值应为4095。

char a, b, c;
int i = (a>>4)<<8 | (b>>4)<<8 | (c>>4);

所以我应该能够达到的最大值是4095;但是,i的值通常是32位整数的最大值。如何使i的最大值为4095 ???

1 个答案:

答案 0 :(得分:0)

有了拼写错误,看起来你想要每个字符的前4位。使用unsigned char来阻止签名扩展:

#include <stdio.h>
int main()
{
    unsigned char a = 0xFB;
    unsigned char b = 0xFC;
    unsigned char c = 0xFE;
    int i = (a>>4)<<8 | (b>>4)<<4 | (c>>4);
    printf("%x %d\n",i,i);
}

输出:

fff 4095