В основном, x+=y
== x = x+y
[*] и то же самое для многих других операторов.
Это означает, что ваш x&=5
совпадает с x = x&5
.
Так что же такое &
? Это побитовое «и». Подробнее о побитовых операторах вы можете прочитать здесь.
&5
в основном берет 3-й и 1-й младшие биты (потому что 5 dec == 101 bin) из того, что у вас есть x
.
Примечания:
[*] Реализация не всегда одинакова. +=
в списках изменяет текущий список, а не создает новый список с суммой и присваивает его имени. Но эффект тот же.