加法&除法

#include <stdio.h>

// 除法
int div(int loperand, int roperand)
{
    int cnt = 0;
    while (loperand > roperand)
    {
        cnt++;
        loperand -= roperand;
    }

    return cnt;
}

// 取余数
int getRemainder(int loperand, int roperand)
{
    while (loperand > roperand)
        loperand -= roperand;

    return loperand;
}

// 加法
unsigned int add(unsigned int loperand, unsigned int roperand)
{
    int currentbit = 0, carrybit = 0;
    unsigned int res = 0;
    int cnt = 0;
    int len = sizeof(loperand) << 3;

    while (cnt < len)
    {
        int tmp = carrybit;     // 临时存放进位位
        carrybit = 0;
        // 计算当前位结果
        currentbit = (loperand & 0x01) ^ (roperand & 0x01);
        // 判断当前位置计算是否进位
        if (currentbit == 0 && (loperand & 0x01) == 1)
            carrybit = 1;
        else if (currentbit == 1 && tmp == 1)
            carrybit = 1;
        currentbit ^= tmp;
        // 计算结果
        res |= (currentbit << cnt);
        cnt++;
        loperand >>= 1, roperand >>= 1;
    }

    return res;
}
int main()
{
    int num1 = 65535;
    int num2 = 65535;

    printf("%d + %d = %d", num1, num2, add(num1, num2));

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值