之前的笔记搬运
x86中的除法基本可以套用到x64中
x / 2\^n(有符号)
if (x < 0)
x = (x+2^n-1)
x >> n
x / 2\^n(无符号)
1 | x \>\> n |
x / -2\^n = -(x / 2\^n)(有符号)
1 | if (x < 0) |
除以非2\^n(正数)(有符号)
1 | x =((x * MAGIC_NUM) >> 32+x) >> n |
除以非2\^n(负数)(有符号)
1 | x = ((x* MAGIC_NUM)>>32 – x)>>n |
无符号除以非2\^n(1)
1 | x = (x * MAGIC_NUM) >> 32 >> n |
无符号除以非2\^n(2)
1 | x = (((x - (x* MAGIC_NUM)>>32)>>1) + x)) >> 2 |