c语言中按位异或的作用,C语言 按位异或实现加法(示例代码)

c语言中按位异或的作用,C语言 按位异或实现加法(示例代码)/*C语言按位异或实现加法*/#include#include#includevoidtest1(){inta=2;intb=3;intcand=0;intcxor=0;intc=0;//实现c=a+b//1.不考虑进位,按位计算各位累加(用异或实现),得到值xor;cxor=a^b;/*实现说明:a的值是2,对应计算机中补码是0000000000000…

大家好,又见面了,我是你们的朋友全栈君。

/*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,对应计算机中补码是 0000 0000 0000 0000 0000 0000 0000 0010

b的值是3,对应计算机中补码是 0000 0000 0000 0000 0000 0000 0000 0011

a^b即

0000 0000 0000 0000 0000 0000 0000 0010

0000 0000 0000 0000 0000 0000 0000 0011

0000 0000 0000 0000 0000 0000 0000 0001 —>异或结果*/

//2.考虑进位,进行位与运算之后,结果左移1位

cand = a&b;/*实现说明:

a的值是2,对应计算机中补码是 0000 0000 0000 0000 0000 0000 0000 0010

b的值是3,对应计算机中补码是 0000 0000 0000 0000 0000 0000 0000 0011

a^b即

0000 0000 0000 0000 0000 0000 0000 0010

0000 0000 0000 0000 0000 0000 0000 0011

0000 0000 0000 0000 0000 0000 0000 0010 —>与结果

0000 0000 0000 0000 0000 0000 0000 0100 —>与结果左移1位,即cand的值*/

//3.进行求和计算

c = cxor + (cand << 1);/*实现说明:

0000 0000 0000 0000 0000 0000 0000 0001 —>异或结果

0000 0000 0000 0000 0000 0000 0000 0100 —>与结果左移1位,即cand的值

0000 0000 0000 0000 0000 0000 0000 0101 —>最终结果是5*/printf(“–test1–c[%d]–“, c);

}voidtest2()

{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,对应计算机中补码是 1 111 1111 1111 1111 1111 1111 1111 1110

b的值是3,对应计算机中补码是 0 000 0000 0000 0000 0000 0000 0000 0011

a^b即

1 111 1111 1111 1111 1111 1111 1111 1110

0 000 0000 0000 0000 0000 0000 0000 0011

1 111 1111 1111 1111 1111 1111 1111 1101 —>异或结果*/

//1.考虑进位,进行位与运算之后,结果左移1位

cand = a&b;/*实现说明:

a的值是2,对应计算机中补码是 1 111 1111 1111 1111 1111 1111 1111 1110

b的值是3,对应计算机中补码是 0 000 0000 0000 0000 0000 0000 0000 0011

a^b即

1 111 1111 1111 1111 1111 1111 1111 1110

0 000 0000 0000 0000 0000 0000 0000 0011

0 000 0000 0000 0000 0000 0000 0000 0010 —>与结果

0 000 0000 0000 0000 0000 0000 0000 0100 —>与结果左移1位,即cand的值*/

//3.进行求和计算

c = cxor + (cand << 1);/*实现说明:

1 111 1111 1111 1111 1111 1111 1111 1101 —>异或结果

0 000 0000 0000 0000 0000 0000 0000 0100 —>cand的值

0 000 0000 0000 0000 0000 0000 0000 0001 —>最终结果是1*/printf(“–test2–c[%d]–“, c);

}intmain()

{

test1();

test2();

printf(“——–ok——-“);

getchar();return 0;

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/142687.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • phpstorm2021.3激活码(在线激活)

    phpstorm2021.3激活码(在线激活),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 【python】hasattr( )的用法

    【python】hasattr( )的用法hasattr()函数用于判断对象是否包含对应的属性。hasattr(object,name)object–对象。name–字符串,属性名。return如果对象有该属性返回True,否则返回False。实例classvariable:x=1y=’a’z=Truedd=variable()print(hasa…

    2022年10月22日
  • JAVAweb学生管理系统(学生信息管理系统代码)

    关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~

  • Windows~~~在MySQL登录时出现Access denied for user ‘root‘@‘localhost‘ (using password: YES) ,并修改MySQL密码

    Windows~~~在MySQL登录时出现Access denied for user ‘root‘@‘localhost‘ (using password: YES) ,并修改MySQL密码适用于windows安装MySQL 对于出现拒绝访问root用户的解决方案 错误1045(28000):用户’root’@’localhost’(使用密码:YES)拒绝访问首先解析此英文:ERROR1045(28000):Accessdeniedforuser’root’@’localhost'(usingpassword:YES);解析的地方有…

  • 云服务器和云虚拟主机的区别、利弊[通俗易懂]

    云服务器和云虚拟主机的区别、利弊[通俗易懂]虚拟主机虚拟主机是利用云技术把一台服务器划分为多个的“虚拟的主机”,划分出来的虚拟主机具有独立域名(能够独立的搭建网站)和完整的Internet服务器的功能,但是带宽和IP是共享服务器的。优势:由于是分享的服务器带宽、IP等所有在价格上分成便宜。虚拟主机一般都是配置好环境的用户能直接使用,客户在购买使用上非常方便。劣势:由于带宽时共享的,虚拟主机的带宽上是没有保障的。IP共享那么安全性…

  • 什么叫侧面指纹识别_侧面指纹VS屏下指纹和后置指纹,原来我们都低估了侧面指纹…「建议收藏」

    什么叫侧面指纹识别_侧面指纹VS屏下指纹和后置指纹,原来我们都低估了侧面指纹…「建议收藏」原标题:侧面指纹VS屏下指纹和后置指纹,原来我们都低估了侧面指纹随着科技的发展,手机花式解锁方式也是让人眼花缭乱。最早的指纹解锁就是密码和手势解锁,后来为了增加屏幕屏占比,还采用了屏下指纹和前后置指纹解锁,以及侧面指纹解锁。这么多指纹解锁方式你最喜欢哪个呢?屏下解锁2018年1月,vivo发布全球首款屏下指纹解锁手机,vivoX20UD屏幕指纹版。指纹解锁速度在0.6S左右,与传统指纹识别0…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号