使用与或运算完成两个整数的相加
来源:互联网 发布:1hhhh最新区域名 编辑:程序博客网 时间:2024/06/05 18:05
题目:有两个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);}
- 使用与或运算完成两个整数的相加
- 不使用+、-、*、/完成两个整数的相加
- 不使用加号,完成整数的相加
- 求两个整数相加的进位次数--位运算
- 利用位运算实现两个整数相加
- 位运算实现两个整数相加
- 无限大的两个整数相加
- 两个大的整数相加
- 异或运算实现两个整数的交换
- 通过异或运算交换两个整数的值
- 将两个数字相加,不得使用+或其他算术运算符
- 不用(+)运算符实现两个整数相加
- 用单链表实现两个大型整数的相加
- 不用+ - * / 实现两个整数的相加
- 两个超级长的整数相加减
- 程序员面试(1):利用位运算完成两个整数的加法运算
- 异或运算交换两个整数
- 不使用第三个变量完成两个整数的交换
- 最常被程序员们谎称读过的计算机书籍
- (译)跟我一起写udev rules
- 从Cortex - M3过度到Cortex - M4(4)----Cortex-M3、4比较
- Window 下找寻Linux引导向的方法
- fedroa 16安装VMware 8.0
- 使用与或运算完成两个整数的相加
- 视频编码与封装方式详解
- Qt中动态链接库的使用
- 分辨率、像素、密度和屏幕尺寸的关系(换算)
- oracle 向存储过程传入数组类型参数
- 循环变量文件夹中的文件
- 递归文件夹底下的所有文件
- 解决IE提示“是要保存此文件,还是联机查找程序来打开此文件”
- ms-inter