- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
static inline int getKey(short int high, short int low)
{
return (((int)high)<<16)+(int)low;
}
static inline short getHigh(int pKey)
{
return (short)(pKey>>16);
}
static inline short getLow(int pKey)
{
return (short)(pKey&0x00000000FFFFFFFF);
}
getLow - всё равно обрежется, возможно даже компилятор соптимизирует
судя по getKey() - нет 🙂
а может быть и да.
задумайся: что произойдет если в low будет верхний бит установлен?
> getLow
да. но константа для обрезания в short радует.
128-битный процессор? 🙂
Так gcc весь этот код превратил в один mul, который тут и задумывался 😉
Так что, видимо, компилятор просто выкинет эту маску в getLow.