C语言-大数减法

来源:互联网 发布:不用网络看小说 编辑:程序博客网 时间:2024/06/04 19:42

typedef unsigned int        u32;
typedef unsigned char       u8;
typedef unsigned short      u16;
typedef unsigned long long  u64;



/******************************************************************************

unsigned integer sub
if underflow, return 1
res = a - b
******************************************************************************/
u32 BigSub(u32 *Res,u32 *Minuend,u32 *Subtrahend,u32 ulLen)
{
    u32 carry=0;
u64 _W;
while (ulLen--)
{
_W = ((u64)*Minuend++) - ((u64)*Subtrahend++) - (u64)carry;
*Res++ = (u32)_W;
carry = (u32)(_W >> 32);
carry = ~carry + 1;
}
return carry;

}

// 数据翻转
void top_swap_bottom(u32 *res,u32 resLen)
{
int i;
for (i=0;i<resLen/2;i++)
{
res[i] = res[i] ^res[resLen-i-1];
res[resLen-i-1]= res[i] ^res[resLen-i-1];
res[i] = res[i] ^res[resLen-i-1];
}
}

// 举个例子


int main()

{

u32 res[8]={0x00};

u32 a[8]={0x00223344,0x99887766,0x00223344,0x99887766,0x00223344,0x99887766,0x00223344,0x99887766};

u32 b[8]={0x00223344,0x22113234,0x00223344,0x99887766,0x00223344,0x99887766,0x99776655,0x99776655};

top_swap_bottom(a,8);

top_swap_bottom(b,8);

BigSub(res,a,b,8,8);

top_swap_bottom(res,8);

return 0;

}

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 东营房产信息网 慈溪房产信息网 珠海房产信息网 泰安房产信息网 长春房产信息网 漳州房产信息网 临沂在线房产网 蚌埠房产信息网 沙县房地产信息网 渭南房地产信息网 深圳房地产信息网论坛 将乐房地产信息网 简阳房地产信息网 六盘水房地产信息网 深圳二手房搜房网 安康房地产信息网 青岛网上房地产网 湖州房地产信息网 无锡房地产信息网 琼海房地产信息网 上海市房产交易网 威海房地产信息网 贵阳房地产信息网 秦皇岛房产信息网 天津市房地产信息网 船房小区 房船图片 房船 船房 房补什么意思 2018经适房补差价新政策 房补一般是多少钱 房补 房车之家 自行式房车 自行房车 man越野房车 越野房车 拖挂式房车 房车图片 房车租赁