- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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);
}
defecate-plusplus 14.06.2012 15:47 # +2
getLow - всё равно обрежется, возможно даже компилятор соптимизирует
Dummy00001 14.06.2012 16:01 # +1
судя по getKey() - нет :)
а может быть и да.
задумайся: что произойдет если в low будет верхний бит установлен?
> getLow
да. но константа для обрезания в short радует.
rat4 14.06.2012 16:42 # +5
128-битный процессор? :-)
bormand 14.06.2012 18:17 # +1
Так gcc весь этот код превратил в один mul, который тут и задумывался ;)
Так что, видимо, компилятор просто выкинет эту маску в getLow.
movaxbx 14.06.2012 17:52 # +1
bormand 14.06.2012 18:19 # 0
Yurik 14.06.2012 21:41 # +7
movaxbx 15.06.2012 15:11 # +1