1,自己写的又长又臭的代码,也能AC,但是太丑了。主要是通过二进制来算。

public static int addAB(int a, int b){
int res = 0;
String str1 = Integer.toBinaryString(a);
String str2 = Integer.toBinaryString(b);
ArrayList<Integer> list = new ArrayList();
int digit = 0;
int cur = 0;
int i = str1.length()-1;
int j = str2.length()-1;
while(i >= 0 && j >= 0){
int tmp = 0; if(str1.charAt(i) == '1'){
System.out.println("here");
if(str2.charAt(j) == '1'){
if(cur == 1){
tmp = 1;
digit = 1;
}
else{
tmp = 0;
digit = 1; }
}
else{
if(cur == 1){
digit = 1;
tmp = 0;
}
else{
digit = 0;
tmp = 1;
}
}
}
else{
if(str2.charAt(j) == '1'){
if(cur == 1){
digit = 1;
tmp = 0;
}
else{
tmp = 1;
digit = 0;
}
}
else{
if(cur == 1){
digit = 0;
tmp = 1;
}
else{
digit = 0;
tmp = 0;
}
} }
cur = digit;
digit = 0;
list.add(tmp);
i--;
j--;
}
while(i >= 0){
int tmp = 0;
if(str1.charAt(i) == '1'){
if(cur == 1){
tmp = 0;
digit = 1;
}
else{
tmp = 1;
digit = 0;
} }
else{
if(cur == 1){
tmp = 1;
digit = 0;
}
else{
digit = 0;
tmp = 0;
}
}
list.add(tmp);
cur = digit;
digit = 0;
i--; }
while(j >= 0){
int tmp = 0;
if(str2.charAt(j) =='1'){
if(cur == 1){
tmp = 0;
digit = 1;
}
else{
tmp = 1;
digit = 0;
}
}
else{
if(cur == 1){
tmp = 1;
digit = 0;
}
else{
digit = 0;
tmp = 0;
}
}
list.add(tmp);
cur = digit;
digit = 0;
j--; }
if(cur == 1){
list.add(1);
}
System.out.println(list); int num = 0;
String str = new String();
for(int k = list.size()-1;k >= 0; k--){
str += list.get(k);
}
System.out.println(str);
return Integer.valueOf(str,2) ;
}

2,CC150课本上的答案。写的非常漂亮,一定要记住了。

思路,1,如果只加不进位,1+1=0,1,0相加1.0+0=0;2,如果看什么时候进位,11的时候。

所以就是a^b,a&b。但进位是往前的,所以,a&b<<1.

答案:

      public static  int addAB(int a, int b) {
// write code here
if(b == 0) return a;
int sum = a ^ b;//只加不进位
int carry = (a & b) << 1;//因为只有1,1,时候才进位。
return addAB(sum,carry);
}

18.1---不用加号的加法(CC150)的更多相关文章

  1. python不用加号实现加法

    问题: Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.E ...

  2. LeetCode(不用加号的加法)

    题目: 设计一个函数把两个数相加,不得使用+或者其他算数运算符. 示例: 输入:a=1,b=1 输出:2 提示: a,b均有可能是负数或0 结果不会溢出32位整数 初始思路: 看到题目我就明白只能用位 ...

  3. C语言不使用加号实现加法运算的几种方法

    今天看到<编码:隐匿在计算机软硬件背后的语言>的第十二章:二进制加法器.讲述了全加器,半加器的原理以及如何实现加法.实现加法时所使用的全加器,半加器中包含的所有逻辑门在C语言中都有相应的运 ...

  4. 编程算法 - 不用加减乘除做加法 代码(C)

    不用加减乘除做加法 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 写一个函数, 求两个整数之和, 要求在函数体内不得使用+, -, *, /四 ...

  5. Python 解决面试题47 不用加减乘除做加法

    在看<剑指Offer>过程中,面试题47不用加减乘除做加法,给出的思路是使用二进制的异或以及与运算,总之就是使用二进制.但是在使用Python实现的过程中,对于正整数是没有问题的,但是对于 ...

  6. 剑指offer(48)不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目分析 不用加减乘除做加法,我第一时间想到的就是用位运算,毕竟计算机是二进制的,所有的操作都是以位运算为基础 ...

  7. 《剑指offer》第六十五题(不用加减乘除做加法)

    // 面试题65:不用加减乘除做加法 // 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷ // 四则运算符号. #include <iostream> int A ...

  8. 剑指offer42:不用加减乘除做加法

    分析: (1)十进制加法分三步:(以5+17=22为例) 1. 只做各位相加不进位,此时相加结果为12(个位数5和7相加不进位是2,十位数0和1相加结果是1): 2. 做进位,5+7中有进位,进位的值 ...

  9. 【剑指offer】面试题 65. 不用加减乘除做加法

    面试题 65. 不用加减乘除做加法 题目描述 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. Java 实现 public class Solution {    ...

随机推荐

  1. 【C++11】新特性——auto的使用

    [C++11]新特性——auto的使用 C++11中引入的auto主要有两种用途:自动类型推断和返回值占位.auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除.前后 ...

  2. wordpress后台404页面

    就在刚刚,boss需要看公司网站后台,网站是用wordpress搭的,发现全是404,蛋疼,于是google,下面是解决办法: location / { if (-f $request_filenam ...

  3. ecshop 订单-》订单状态 2

    // 判断订单状态 public function get_order_status($os,$ps,$ss){ $arr = array('已取消','待付款','待发货','待收货','确认收货' ...

  4. ecshop mobile 文件介绍

    mobile手机端 1.common位置:include\apps\default\common\ function.php show_message 成功跳转页面    其他页面引用  show_m ...

  5. CentOS 7学习手册

    CentOS 7与之前版本有较大变动,查阅资料,整理得到如下手册(未完~). 一.安装 1.使用哪种方式安装 (1).虚拟机安装,推荐:VM,功能齐全,强大(Virtual Box也可以). (2). ...

  6. SCWS分词扩展在UNIX/LINUX下的安装方法

    <?php/** * 中文分词处理方法 *+--------------------------------- * @param stirng  $string 要处理的字符串 * @param ...

  7. Mysql 排名查询

    原文地址: http://www.cnblogs.com/songshuai/p/5688550.html http://blog.csdn.net/u010503822/article/detail ...

  8. RPC-远程过程调用协议

    远程过程调用协议 同义词 RPC一般指远程过程调用协议 RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要 ...

  9. ajax实例详解(2)

    说到ajax当然离不开json格式了.在ajax的数据传递过程中用到最多的便是json格式了吧. 什么是json格式,在刚开始用它的时候,着实让人迷茫了一阵子呀.说的白了点所谓json不就是一种数据的 ...

  10. 梳理javascript原型整体思路

    相信很多对javascript原型初步了解的人都知道prototype,constructor,__proto__这些名词,也在一定程度上可以使用这些对象.属性.甚至知道在构造函数的原型上定义方法供实 ...