这个函数如何比较没有循环的位?请描述一下如何完成。这个数字是什么意思:6148914691236517205uL,3689348814741910323uL,1085102592571150095uL,72340172838076673uL。
public static int HashDistance(ulong hash1, ulong hash2)
{
ulong num = hash1 ^ hash2;
num -= (num >> 1 & 6148914691236517205uL);
num = (num & 3689348814741910323uL) + (num >> 2 & 3689348814741910323uL);
num = (num + (num >> 4) & 1085102592571150095uL);
return Convert.ToInt32(num * 72340172838076673uL >> 56);
}