相关疑难解决方法(0)

什么是a ^ b和(a&b)<< 1?

我在leetcode中做了这个问题

请求:

计算两个整数a和b的总和,但不允许使用+和-运算符。

我不明白它提供的解决方案

有人可以解释一下此getSum功能的工作原理吗?

这是JS中的答案:

var getSum=function(a,b) {
    const Sum = a^b; //I can't understand how those two line's code can
    const carry = (a & b) << 1; //get the sum
        if(!carry) {
            return Sum
        }
    return getSum(Sum,carry);
};
console.log(getSum(5,1));
Run Code Online (Sandbox Code Playgroud)

javascript bitwise-operators

26
推荐指数
2
解决办法
2057
查看次数

不使用+运算符添加两个数字的最佳方法是什么?

我和一个朋友来回与脑筋急转弯,我不知道如何解决这个问题.我的假设是,有些按位运算符是可能的,但不确定.

addition low-level

25
推荐指数
5
解决办法
3万
查看次数

如何在JavaScript中添加两个数字"不使用`+`或`-`运算符"?

▶注意:

这不是一个基本的"如何在JavaScript中添加数字"的问题

在downvoting之前请仔细阅读问题

我知道使用+符号进行添加的替代方法是执行以下操作:

int add(int a, int b)
{
     if(b == 0)
         return sum;
     sum = a ^ b;
     carry = (a & b) << 1;
     return add(sum,carry);
}
Run Code Online (Sandbox Code Playgroud)

但我有两个问题:

  • 这是C++,而不是JavaScript.这是否支持JavaScript?
  • 很明显,整个技巧都在^ & <<,但我不知道如何在JavaScript中开始寻找它们,因为我不知道它们叫什么.
    我甚至应该用谷歌搜索什么?

我试着用JavaScript编写这个...但似乎我想念一些东西

var getSum = function(a, b) {
  return (a ^ b, (a & b) << 1)
};
Run Code Online (Sandbox Code Playgroud)

javascript algorithm

19
推荐指数
2
解决办法
6079
查看次数

C中的整数SIMD指令AVX

我试图在数据类型上运行SIMD指令int,float并且double.我需要乘法,添加和加载操作.

为了floatdouble我成功设法使这些说明工作:

_mm256_add_ps,_mm256_mul_ps_mm256_load_ps(结束*pd为double).(不支持直接FMADD操作)

但对于整数,我找不到工作指令.在英特尔AVX手册中显示的所有这些都给出了GCC 4.7的类似错误,例如"'_mm256_mul_epu32'未在此范围内声明".

对于加载我使用的整数_mm256_set_epi32,这对于GCC来说很好.我不知道为什么没有定义其他指令.我需要更新一些东西吗?

我包括所有这些 <pmmintrin.h>, <immintrin.h> <x86intrin.h>

我的处理器是Intel核心i5 3570k(Ivy Bridge).

c gcc simd avx

2
推荐指数
1
解决办法
2999
查看次数

标签 统计

javascript ×2

addition ×1

algorithm ×1

avx ×1

bitwise-operators ×1

c ×1

gcc ×1

low-level ×1

simd ×1