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;

}

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • APP 安全测试(OWASP Mobile Top 10)–后篇之一

    APP 安全测试(OWASP Mobile Top 10)–后篇之一OWASPMobileTop10相对于Web的OWASPTop10来说,个人觉得描述的相对简单多,并且安全测试的时候的可操作性也不是太强。本来打算个人整体捋一遍的,但因为项目时间的问题,前面四个章节安排给了别人去负责,我只负责后面的六章(所以标题写了后篇)。下面我把个人的测试方法简单叙述一下。下面可能有些测试点不全或者有瑕疵,欢迎纠错。。。。OWASPM…

    2022年5月7日
    163
  • SpringMVC面试题总结「建议收藏」

    SpringMVC面试题总结「建议收藏」前言:SpringMVC的面试题常见的也就那几种,本文我打算分为两个方向为大家介绍SpringMVC的面试题。第一部分将从源码的执行的角度分析SpringMVC(以后简称MVC)第二部分将从面试官常问的SpringMVC面试题取介绍SpringMVC源码介绍1.http://localhost:8000/hello这个路径的执行流程是怎么走的流程大致分析一下:首先会请求会进入前…

    2022年6月19日
    25
  • 不错的BLOG和论坛[通俗易懂]

    不错的BLOG和论坛[通俗易懂]高手的博客阿虚的电子小屋http://hi.baidu.com/aokikyon(从单片机到嵌入式linux都有研究)XY嵌入式Linux  http://blog.chinaunix.net/group/group_1488.html(嵌入式内核研究)嵌入式系统开发Linux+ARMhttp://blog.chinaunix.net/u2/79779/index.html(

    2022年10月2日
    4
  • 渗透测试工具包 | 开源安全测试工具 | 网络安全工具

    渗透测试工具包 | 开源安全测试工具 | 网络安全工具项目介绍记录渗透测试开源工具。自动化渗透测试 AttackSurfaceMapper-自动化渗透测试工具,使用手册/测试流程。 vajra-自动化渗透测试. Savior-渗透测试报告自动生成工具!. 漏洞利用框架 hackUtils-它是一个用于渗透测试和网络安全研究的黑客工具包,渗透以及web攻击脚本。 msf框架: pocsscan攻击框架 Pocsuite攻击框架 Beebeeto攻击框架 …

    2022年8月12日
    8
  • html img 能显示psd吗_psd变成html

    html img 能显示psd吗_psd变成html今日小结psd是指经过Photoshop处理过保存后的图片,其格式为psd。这是清除浮动的最常用,最普遍的方法拿到图片将psd变成html代码的步骤如下:1.样式文件和初始化①可以新建三个文件夹。(css,images,js)然后在css下需要建立三个样式,”index,common(公共),reset(重置)”新手比如我,需要这样写,但是熟练以后就不用了js下需要建立(index)这一个样式。(…

    2022年6月1日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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