Size: a a a

2021 June 10

p

persona x grata in JS Liberty
const addition = (a, b) => {
 let result = 0;
 let mask = 1;
 let nextmask;

 while (mask !== 0) {
   nextmask = mask << 1;
   if (a & mask) {
     if (result & mask) result ^= nextmask;
     result ^= mask;
   }
   if (b & mask) {
     if (result & mask) result ^= nextmask;
     result ^= mask;
   }
   mask = nextmask;
 }
 return result
};

console.log(addition(1, 3)) //4
источник

p

persona x grata in JS Liberty
это на побитовом 1 + 3
источник

DE

Denis Efremov in JS Liberty
      if (result & mask) result ^= nextmask;
     result ^= mask;

Этот блок 2 раза повторяется
источник

p

persona x grata in JS Liberty
я отсюда пробую переписать на жс https://bisqwit.iki.fi/story/howto/bitmath/
источник

p

persona x grata in JS Liberty
а если убрать не работает
источник

DE

Denis Efremov in JS Liberty
Ога
источник

p

persona x grata in JS Liberty
с комментариями
источник

DE

Denis Efremov in JS Liberty
Код то зачем удалил. Сделай гист
источник

p

persona x grata in JS Liberty
const addition = (a, b) => {
 let result = 0
 let mask = 1
 let nextmask

 while (mask !== 0) {
   nextmask = mask << 1
   if (a & mask) { // If A has that bit set?
     // If result also has that bit set, set carry (next bit in result)
     if (result & mask) result ^= nextmask // This could also be |= instead of ^= .
     result ^= mask // Flip this bit in result
   }
   if (b & mask) { // If B has that bit set?
     // If result also has that bit set, set carry (next bit in result)
     if (result & mask) result ^= nextmask // This could also be |= instead of ^= .
     result ^= mask // Flip this bit in result
   }
   mask = nextmask
 }
 return result
}

console.log(addition(1, 3)) // 1 + 3 = 4
источник

p

persona x grata in JS Liberty
еще так
источник

p

persona x grata in JS Liberty
const addition = (a, b) => {
 let carry  = a & b;
 let result = a ^ b;
 let shiftedcarry
 
 while(carry !== 0) {
   // If you need the mathematical carry from addition,
   // check the overflow from this shift.
   shiftedcarry = carry << 1;
   carry  = result & shiftedcarry;
   result = result ^ shiftedcarry;
   }
 return result
}

console.log(addition(1000000, 3000000))
источник

p

persona x grata in JS Liberty
правда это на 10% медленее, чем просто 1000000 + 3000000
источник

В

Виктория in JS Liberty
источник

В

Виктория in JS Liberty
Че за бардель вы тут устроили??
источник

В

Виктория in JS Liberty
Вообще-то это чат по Джава Скрипту
источник

Е

Евдоким in JS Liberty
Эйчарками меряемся.
источник

В

Виктория in JS Liberty
fff
источник

Е

Евдоким in JS Liberty
Вот эту вот в пизду послал.
источник

Е

Евдоким in JS Liberty
Кажется.
источник

Е

Евдоким in JS Liberty
Ща скрин найду.
источник