24位数如何溢出为32位类型?

时间:2015-09-15 21:32:04

标签: c

如果我将三个无符号字符包装成32位整数,并且最高有效字节溢出,它是否会溢出到32位类型的高8位?它是否仅以模数256减少MSB而不影响32位类型的高8位?

编辑:

Packed using bit shifting on little endian architecture: 

unsigned int foo = (msb << 16) | (middle << 8) | lsb;

1 个答案:

答案 0 :(得分:1)

因为您的变量是32位类型,恰好包含24位值,所以24位部分的溢出将向上移动到第25位。因此它将表现为正常的32位值。

例如:

uint32_t x = 0xFFFFFF;
printf("x=%08x\n", x);   // prints 00FFFFFF
x++;
printf("x=%08x\n", x);   // prints 01000000