/************************************************************************* > File Name: main.c > Author: TL Song > Mail: songtianlun@frytea.com > Created Time: Thu 27 Aug 2020 12:08:59 PM UTC ************************************************************************/ #include #include #include #include using namespace std; int bitAdd(int num1, int num2) { int exclusive_val = num1; //异或值 int carry_val = num2; //进位值 exclusive_val = num1 ^ num2; //取第一次异或值(没有进位的异或就是相加) carry_val = (num1 & num2) << 1; //取第一次进位值 //进位值为0是循环终止条件 while (carry_val) { int temp = exclusive_val; exclusive_val = exclusive_val ^ carry_val; //异或值与进位值进行异或 carry_val = (temp & carry_val) << 1; } return exclusive_val; } int add(int a, int b) { return a+b; } int bitSubtraction(int num1, int num2) { int temp = bitAdd(~num2, 1); //取反与求补差1 return bitAdd(num1, temp); } int subtraction(int a, int b) { return a - b; } int bitDivide(int x, int y) { int ans=0; for(int i=31;i>=0;i--) { // //比较x是否大于y的(1<>i) >=y ) { ans+=(1<>1); } return ans; } int mulTwo(int n) { return n << 1; } int divTwo(int n) { return n >> 1; } int getAverage(int x, int y) { return ( x + y ) >> 1; } int main() { int i; int a,b; int result; int num = 10000000; clock_t start, finish; double duration; //printf("Test Add:\n"); printf("Please Enter the num1: "); scanf("%d",&a); printf("Please Enter the num2: "); scanf("%d",&b); printf("---------------------------------------------------------------------------------------------\n"); start = clock(); for(i=0;i Bit add calculation %d times total time: %f, Last result: %d\n", num,duration,result); start = clock(); for(i=0;i Direct add calculation %d times total time: %f, Last result: %d\n", num,duration,result); printf("---------------------------------------------------------------------------------------------\n"); start = clock(); for(i=0;i Bit multiply calculation %d times total time: %f, Last result: %d\n", num,duration,result); start = clock(); for(i=0;i Direct multiply calculation %d times total time: %f, Last result: %d\n", num,duration,result); printf("---------------------------------------------------------------------------------------------\n"); start = clock(); for(i=0;i Bit divide calculation %d times total time: %f, Last result: %d\n", num,duration,result); start = clock(); for(i=0;i Direct divide calculation %d times total time: %f, Last result: %d\n", num,duration,result); printf("---------------------------------------------------------------------------------------------\n"); start = clock(); for(i=0;i Bit multiply 2 calculation %d times total time: %f, Last result: %d\n", num,duration,result); start = clock(); for(i=0;i Direct multiply 2 calculation %d times total time: %f, Last result: %d\n", num,duration,result); printf("---------------------------------------------------------------------------------------------\n"); start = clock(); for(i=0;i Bit divide 2 calculation %d times total time: %f, Last result: %d\n", num,duration,result); start = clock(); for(i=0;i Direct divide 2 calculation %d times total time: %f, Last result: %d\n", num,duration,result); printf("---------------------------------------------------------------------------------------------\n"); start = clock(); for(i=0;i Bit average calculation %d times total time: %f, Last result: %d\n", num,duration,result); start = clock(); for(i=0;i Direct average calculation %d times total time: %f, Last result: %d\n", num,duration,result); printf("---------------------------------------------------------------------------------------------\n"); }