因此12位int的最大值应为4095。
char a, b, c;
int i = (a>>4)<<8 | (b>>4)<<8 | (c>>4);
所以我应该能够达到的最大值是4095;但是,i的值通常是32位整数的最大值。如何使i的最大值为4095 ???
答案 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