一段代码,关于数字屏蔽
int loopSize = 1000000000;
int o = 18786665;
int p = 3000206;

boolean isBack = true;

long id = ((((long)o)<<24) + p);

System.out.println(id);

long MASK_PROVIDER_ID  = 0x0000000000FFFFFFL;
long MASK_OUTCOME_ID  = 0x7FFFFFFFFF000000L;

System.out.println(id & MASK_PROVIDER_ID);
System.out.println((id & MASK_OUTCOME_ID)>>24);
代码输出
315187939624846
3000206
18786665
请问(long)o)<<24)什么意思, 最后2行如何理解?