C/C++ 通过位运算实现DIV(除法)求余(MOD)整数数学运算。

例子: 

            Byte mod = 0;
            Byte q = DIV(255, 92, mod);

实现:

/// 
/// DIV
/// 
/// 被除数
/// 除数
/// 余数
/// 
template 
static constexpr T DIV(T a, T k, T& r) noexcept {
    static constexpr int L = (sizeof(T) << 3) - 1;

    T q = 0;   // 商
    for (int i = L; i >= 0; i--) {
        r <<= 1;             // 余数左移1位
        r |= ((a >> i) & 1); // 取出被除数对应的二进制位
        if (r >= k) {        // 如果余数大于等于除数,则减去除数并将商的对应二进制位置1
            r -= k;
            q |= (1 << i);
        }
    }
    return q;
}

你可能感兴趣的:(C/C++,c语言,c++,java)