2013-06-16 1 views

ответ

2

Для умножить на 2 в степени N (то есть 2^N) сдвигают биты N раз к левому

0000 0001 = 1 

times 4 = (2^2 => N = 2) = 2 bit shift : 0000 0100 = 4 

times 8 = (2^3 -> N = 3) = 3 bit shift : 0010 0000 = 32 

и т.д ..

визуализировать

раз 9 просто добавить исходное значение, как этот

0000 1001 // 9 original value 

0001 0000 // 2 shift 3 to left 
0000 0010 + // 2 
----------- 
0001 0010 = 18 

0001 1000 // 3(0000 0011) shift 3 to left 
0000 0011 + // 3 
----------- 
0001 1011 = 27 

0010 0000 // 4(0000 0100) shift 3 to left 
0000 0100 + // 4 
----------- 
0010 0100 = 36 

и т.д ..

Значение х = (п < < 3) + п

сдвига и добавления умножение

1

9 is 1001 , поэтому сдвиг влево 3 раза и добавьте первоначальное значение.

1

Немного сдвиг влево, как умножение 2. Так 2x2x2 = 8, то добавить исходное значение снова (что то же самое, как делают +1) = 9

т.е.

((v<<1)<<1)<<1) + v == (v << 3) + v 
+0

Я прошу вас умножить с помощью битового оператора не простой математический оператор на. –

+0

это побитовые операции ... – Timmetje

+0

он изменил перед моим комментарием –

Смежные вопросы