Найти количество единиц в двоичной записи результата
![]()
1016=1*161+0*160 = 1610=24
23*22*21*24=210 (210)2012 = 220120
408=3210 = 25 (25)2013 = 210065
204 = 810 = 23 (23)1212 = 23636
102 = 21 (21)2112 = 22112
220120 + 210065 + 23636 - 22112 - 21 - 20
Разберем пример попроще:
210 + 216 + 212 – 27- 21 - 20
16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | n - степень позиции |
2048 | 1024 | 512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 2n | |||||
1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 210 + 216 + 212 |
Найдем закон вычитания (на маленьких числах) 16-2=14 | |||||||||||||||||
1 | 0 | 0 | 0 | 0 | 24 | ||||||||||||
0 | 1 | 1 | 1 | 0 | 24 – 21 = 14 | ||||||||||||
Мы видим, что в позициях степеней (4-1=3 и до 1) = 1 и соответственно позиция степени 4 = 0 1 способ | |||||||||||||||||
1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 216+ 212 + (210 - 27) |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | вычтим 21 |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | вычтим 20 |
Проверка: 216 + 212 + 210 =65536 + 4096 + 1024 = 70656 - 27- 21 - 20 = 70525 216 + 212 + 29 + 28 + 26 + 25 +24 +23 +22 + 20 = 65536 + 4096 + 512 + 256 + 64 + 32 + 16 + 8 +4 + 1 = 70525 | |||||||||||||||||
2 способ | |||||||||||||||||
1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 216 + 212 + 210 |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | вычтим 20 |
216 + 212 + (210 - 20)=65536 + 4096 + 1023 = 70655 Теперь остается убрать «1» в позициях степеней 1 и 7, т. к. в числе нет этих слагаемых | |||||||||||||||||
1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | вычтим 21 и 27 |
Сравним оба результата. Вывод – способ 2 – гораздо проще Пример: 212 - 27 -23 | |||||||||||||||||
12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||||
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 212 | ||||
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 212 - 23 =4088 | ||||
1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | -27 (-128=3960) | |||||
Проверим 4096-128-8=3960 = 211 + 210 + 29 + 28 + 26 + 25 + 24 + 23 =2048+1024+512+128+64+32+16+8 |
Вернемся к примеру: 220120 + 210065 + 23636 - 22112 - 21 - 20
Количество позиций двоичного кода: 20120+1(нулевая степень)= 20121Изначально количество единиц – 3 остальные нули
Теперь, Вы можете решить эту задачу – только требуется аккуратность и знание и понимание формулы числа


