Двійкова згортання описується числом M
і застосовується до числа N
. Для кожного біта у двійковому поданні M
, якщо біт встановлений ( 1
), відповідний біт у виводі задається шляхом XORing двох бітів, що примикають до відповідного біта N
(обмотування, коли це необхідно). Якщо біт не встановлений ( 0
), то відповідний біт у висновку задається відповідним бітом в N
.
Робочий приклад (з 8-бітовими значеннями):
- Нехай
N = 150
,M = 59
. Їх бінарні репрезентації складають (відповідно)10010110
та00111011
. - На основі
M
бінарного подання 'біти 0, 1, 3, 4 і 5 згортаються.- Результат для біта 0 дає XORing біти 1 і 7 (оскільки ми обертаємось), поступаючись
1
. - Результат для біта 1 задається бітами XORing 0 і 2, поступаючись
0
. - Результат для біта 2 задається початковим бітом 2, поступаючись
1
. - Результат для біта 3 задається бітами XORing 2 і 4, поступаючись
0
. - Результат для біта 4 дає біти XORing 3 і 5, поступаючись
0
. - Результат для біта 5 дається бітами XORing 4 і 6, поступаючись
1
. - Результати для бітів 6 і 7 даються вихідними бітами 6 і 7, отримуючи
0
і1
.
- Результат для біта 0 дає XORing біти 1 і 7 (оскільки ми обертаємось), поступаючись
- Вихід таким чином
10100110
(166
).
Змагання
Беручи під увагу , N
і M
, вихідний результат виконання двійковій згортки , описаний M
на N
. Введення та вихід можуть бути у будь-якому зручному, послідовному та однозначному форматі. N
і M
завжди буде знаходитись у діапазоні (включно) [0, 255]
(8-бітні цілі числа), а їх двійкові представлення мають бути замінені на 8 біт для виконання двійкової згортки.
Випробування
150 59 -> 166
242 209 -> 178
1 17 -> 0
189 139 -> 181
215 104 -> 215
79 214 -> 25
190 207 -> 50
61 139 -> 180
140 110 -> 206
252 115 -> 143
83 76 -> 31
244 25 -> 245
24 124 -> 60
180 41 -> 181
105 239 -> 102
215 125 -> 198
49 183 -> 178
183 158 -> 181
158 55 -> 186
215 117 -> 198
255 12 -> 243