Зачем нужно сдвигать биты при считывании данных с аналогового датчика?

Я экспериментировал с некоторыми аналоговыми датчиками Grove и смотрел примеры (https://github.com/DexterInd/GrovePi/blob/master/Software/Go/grovepi/grovepi.go — этот конкретный пример написан на Go и для Raspberry Pi, но на Arduino он тот же). Я понял, что для получения результата нужно использовать "(int(val[1]) << 8) | int(val[2])".

Почему это так? Почему вторые 8 бит нужно сдвинуть влево на 8, и почему тогда используется операция «ИЛИ» с третьей группой бит?

, 👍1