テスト
int main(int argc, char* argv[])
{
 int value[] = {1,10,100,1000,10000,100000,1000000};

 for (int i=0;i<sizeof(value)/sizeof(int);i++){
   int hush = ((value[i]>>14) | value[i]) & 15;
   printf("%d : %d\n",value[i],hush);
 }

 return 0;
}

結果

1 : 1
10 : 10
100 : 4
1000 : 8
10000 : 0
100000 : 6
1000000 : 13