/非二的幂
高级代码:
printf("%d",Number % 3);//无符号/非二的幂汇编代码:
可以看出,无符号 / 非2的幂的时候,直接使用 DIV 了,同理有符号 / 非2的幂的时候,就会使用...可以看出这段汇编代码, eax给的是常量,直接使用DIV了,用的是EDX,由此判定, 除数是一个变量,而这个变量是无符号类型了,因为上面的 XOR EDX,EDX清空了....上面汇编代码表示, 我用有符号变量 % 一个80000007h,得出的结果如果不是负数(jns)那么余数就是正数,直接跳走了
首先我说下为什么是 800...7h
上面也说过了,要保留符号位
那么8则是符号位...,也就是1, 而为什么最后是7那?...那么
a % |b| = |q| ... r 摸不摸 b的绝对值,其 r值不变的.影响的只是 q对不起.
但是
|a| % b = |q| ...