首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    从编译器除以2的幂说起

    那就是除以2的幂。编译器会将除以 2^n 使用移位进行优化。 我们在编码时可以善于利用 2^n ,比如数组/队列的长度、取余、相除的除数等最好都使用 2^n 。说不定有意外的惊喜。...原码除以 2^n 当一个整数以原码表示时,除以2的幂也可以用移位运算来实现。 执行逻辑右移(前位补0)移位总是舍入到零的结果。...补码除以 2^n 同理,补码有类似的性质。但需要进行算术右移,也就是前位补1。...对其除以 2^3 。等同右移3位,得到结果为:-772。但结果变成了 向下舍入。 回到前面的原码场景,6170进行除以8的结果是 771。...例如计算 -8/2^2=-2 解: -8=b11000 2^2 - 1=b11 -8+2^2-1=b11011 算术右移2位: b11110 = -2 这说明,正好能除尽,也就没有向0舍入的问题。

    20930
    领券