记录下Router这个工程的几个全局函数.
clogb
1 | function integer clogb(input integer argument); |
函数的逻辑相当简单,计算二进制参数能够右移的数目,换算成十进制,就是计算能够除2多少次。这个逻辑大家都不回陌生,就是对数函数。以2为底的对数函数。
例如: res=clog(8)
参数为8,结果为3.显而易见,这个函数是典型的向上取整。
croot
1 | function integer croot(input integer argument, input integer base); |
函数有两个参数,一个是传入的需要计算的参数argument
,另外则是base
基数。整个函数的逻辑就是base个croot
相乘,看是否能够大于argument。croot逐次增加,直到满足要求。同样的,函数也是向上取整
- argument:10~16 base:2
croot=4
- argument:9~27 base:3
croot=3
显然,函数的逻辑是将argument开base根.
pop_count
1 | function integer pop_count(input integer argument); |
判断参数最低位是否为1,然后将参数右移,继续判断,判定正确则加1.
1 | 1:1 |
suffix_length
1 | function integer suffix_length(input integer value1, input integer value2); |
计算两个传入的参数从最低位开始到最高位有多少位数不相同。