加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用移位运算符拆分一个大的十进制数

发布时间:2020-12-16 07:09:45 所属栏目:百科 来源:网络整理
导读:How to write a program in c to split a large number using shift operator ? 例如,我们需要仅使用位移操作将12345678这样的大数字分成两个较小的数字1234和5678而不使用正常的n = n * 10和n = n?技术.你会怎么做? 解决方法 您可以使用标准长除法算法并

How to write a program in c to split a large number using shift operator ?

例如,我们需要仅使用位移操作将12345678这样的大数字分成两个较小的数字1234和5678而不使用正常的n = n * 10和n = n?技术.你会怎么做?

解决方法

您可以使用标准长除法算法并使用12345678和10000调用它.如果要将其优化为仅除以10000,则手动预先评估b == 10000.

void div(int a,int b) {
    int d,res;
    d = 1;
    res = 0;
    while (b > 0 && b < a) {
        b <<= 1;
        d <<= 1;
    }

    do {
        if (a >= b) {
            a -= b;
            res += d;
        }
        b >>= 1;
        d >>= 1;
    } while (d);

    printf("Result: %d,reminder: %dn",res,a);
}

int main() {
    div(12345678,10000);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读