不过,如果是随机生成数据的话,不用这么麻烦吧。
只要到着一个个判断就很快了吧
function log10(n){
if(n>10^38) return 38;
if(n>10^37) return 37;
.....
}
如果知道数据不是随机,应该根据规律来,在某个数据的快慢不说明啥问题 差异大的两数不必非得XOR计算,
其结果位数可由两者较大的决定。 A = 10^20 - 2^20
B = 2^20
A XOR B = 10^20
log10(A) = 19.99999999999999544609229344
log10(A XOR B) = 20
回复 72# 无心人 的帖子
现在被我改的通过不了了!呵呵,正在找错误! 各位请解释下75#的例子 75#的例子还能构造出很多很多很多很多所以你们以为的差异大可以忽略的结论是错误的啊
虽然可以做出判定条件
但似乎也太多了点吧 楼主的这个说法不妥:
如果最高位m高于10^n,且低于10^n+1,那么这个数同最高位小于m的数进行Xor并取log10后的结果,都是n,
应该改为
考虑二进制位,如果最高位m高于10^n的最高位,且低于10^(n+1)的最高位,那么这个数同最高位小于m的数进行Xor并取log10后的结果,都是n,
XOR当两个数字的比特位是1的位置均不相同的时候等于运算+
所以,肯定存在10进制进位的可能,当然绝对不存在二进制进位