首页 > 编程知识 正文

c语言简单加法代码,c语言乘法运算

时间:2023-05-05 18:19:18 阅读:18792 作者:2386

/*C语言用异或相加*/#include#include#include

voidtest1 () )

{int a=2; int b=3; int cand=0; int cxor=0; int c=0; 实现c=a b//1。不考虑进位,按位计算各位的累计(用异或实现),得到值xor;

cxor=a^b; /*实施说明:

a的值为2,对应的计算机补码为00000000000000000000000000000000000000000000000000

b的值为3,对应的计算机补码为000000000000000000000000000000000000000000000000001

a^b即

0000 0000 0000 0000 0000 0000 0000 0010

0000 0000 0000 0000 0000 0000 0000 0011

00000000000000000000000000000000000000000000001-- -异或的结果*/

//2 .考虑进位,进行位和运算后,将结果向左偏移1位

cand=ab; /*实施说明:

a的值为2,对应的计算机补码为00000000000000000000000000000000000000000000000000

b的值为3,对应的计算机补码为000000000000000000000000000000000000000000000000001

a^b即

0000 0000 0000 0000 0000 0000 0000 0010

0000 0000 0000 0000 0000 0000 0000 0011

00000000000000000000000000000000000000000000000-- -和结果

000000000000000000000000000000000000000000000100----从结果开始向左1位,即cand的值*/

//3 .进行加法计算

c=cxor(cand1 ); /*实施说明:

0000000000000000000000000000000000000000000000001-- -异或的结果

0000000000000000000000000000000000000000000000100----结果和向左移位一位,即cand的值

000000000000000000000000000000000000101----最终结果为5*/printf((-test1----c[%d]----)、c );

} Void测试2 () ) )。

{int a=-2; int b=3; int cand=0; int cxor=0; int c=0; 实现c=a b//1。不考虑进位,按位计算各位的累计(用异或实现),得到值xor;

cxor=a^b; /*实施说明:

a的值为2,对应的计算机补码为11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

b的值为3,对应的计算机补码为000000000000000000000000000000000000000000000000001

a^b即

1 111 1111 1111 1111 1111 1111 1111 1110

0 000 0000 0000 0000 0000 0000 0000 0011

111111111111111111111111111111111111111101----异或的结果*/

//1 .考虑进位,进行位和运算后,将结果向左偏移1位

cand=ab; /*实施说明:

a的值为2,对应的计算机补码为11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

b的值为3,对应的计算机补码为000000000000000000000000000000000000000000000000001

a^b即

1 111 1111 1111 1111 1111 1111 1111 1110

0 000 0000 0000 0000 0000 0000 0000 0011

00000000000000000000000000000000000000000000000-- -和结果

000000000000000000000000000000000000000000000100----从结果开始向左1位,即cand的值*/

//3 .进行加法计算

c=cxor(cand1 ); /*实施说明:

111111111111111111111111111111111111111111101-- -异或的结果

000000000000000000000000000000000000000000000100---cand的值

000000000000000000000000000000000000000001----最终结果为1*/printf((-test2----c[%d]----)、c );

}intmain () ) ) ) ) )。

{

test1 (;

test2(;

printf (------ -确定----) );

getchar (; 返回0;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。