首页 > 代码库 > C实现二进制乘法
C实现二进制乘法
1 /* 2 二进制乘法 3 */ 4 #include <stdio.h> 5 #include <stdlib.h> 6 #define LEN 64 //因子二进制位数的两倍,32位乘法结果不会超过64位 7 8 int main() 9 {10 unsigned int a = 0x13131313;11 unsigned int b = 0x23232323;12 unsigned int p = 0x00000001;13 unsigned int temp = 0; 14 unsigned int flags; //用于判断做加法时是否溢出15 int i;16 int rlt[LEN] ={0}; //结果数组17 18 for(i=0; i<LEN; i++) //主循环19 {20 flags = 0;21 22 if(b&p) //判断是否需要做加法23 {24 flags = temp;25 temp += a;26 }27 28 rlt[i] = (int) temp & 1; //最低位丢弃,并保存至数组29 if(temp < flags) //判断是否溢出30 temp += 0x80000000;31 32 temp >>= 1; //右移结果33 p <<= 1;34 }35 36 i = LEN-1;37 while(rlt[i] == 0) i--; //丢弃结果前面的038 for(; i>=0; i--) //打印结果39 printf("%d", rlt[i]);40 41 printf("\n");42 43 return EXIT_SUCCESS;44 }45 #ifdef RESULT 46 D:47 cd Cprogram48 gcc axb.c49 (echo #ifdef RESULT & doskey /history & a.exe & echo #endif) >> ./axb.c50 101001111000111001110101010110101111010000001101001001100151 #endif
C实现二进制乘法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。