博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用与或运算完成两个整数的相加
阅读量:4067 次
发布时间:2019-05-25

本文共 433 字,大约阅读时间需要 1 分钟。

题目:有两个10进制整数,仅使用与或运算完成两个整数的相加。

C语言中有个很美好的功能叫“位操作”,位操作符有6种。

& 按位与

| 按位或
^ 按位异或
~ 取反
<< 左移  c=c<<1
>> 右移

考虑两个二进制数的相加,

1、将每位进行异或操作,操作之后得出的是不带进位加法的结果。

2、将每位进行与操作。当结果为1时说明该位产生进位。

3、将2的结果左移一位,得到的就是应该加在结果1上面的进位产生的数值。

4、用以上步骤进行1+3的操作,直到每一位都没有进位为止。

int main(){    int a=5,b=3;	int c=0,time=0; /*c:存放进位,time:存放循环运行次数*/	do	{			c=a&b;		c=c<<1;  /*进位数的总值*/		b=a^b;	/*不带进位的加法*/		a=c;		time++;	}while(c);	printf("%d,run time=%d",b,time);	return(0);}

转载地址:http://eymji.baihongyu.com/

你可能感兴趣的文章
编译Android4.0源码时常见错误及解决办法
查看>>
Android 源码编译make的错误处理
查看>>
linux环境下C语言中sleep的问题
查看>>
ubuntu 12.04 安装 GMA3650驱动
查看>>
新版本的linux如何生成xorg.conf
查看>>
xorg.conf的编写
查看>>
启用SELinux时遇到的问题
查看>>
virbr0 虚拟网卡卸载方法
查看>>
No devices detected. Fatal server error: no screens found
查看>>
新版本的linux如何生成xorg.conf
查看>>
virbr0 虚拟网卡卸载方法
查看>>
Centos 6.0_x86-64 终于成功安装官方显卡驱动
查看>>
Linux基础教程:CentOS卸载KDE桌面
查看>>
hd cdnServer 51cdn / ChinaCache / ATS / Apache Traffic Server
查看>>
project web architecture
查看>>
OS + Unix HP-UX
查看>>
OS + Unix Solaris / openSolaris
查看>>
db sql montior
查看>>
Unix + SCO UnixWare
查看>>
db db2 books
查看>>