Давай сломаем binaryString[i] = ((number & 1) + '0')
вниз, по частям:
сначала посмотрим на (number & 1)
. Это проверяет, является ли младший значащий бит в number
1 или нет. Если это так, это выражение оценивается в 1, в противном случае оно оценивается в 0.
((number & 1) + '0')
берет результат этого предыдущего вычисления и добавляет его к 0
. Если наименее значащая цифра number
равна 0
, мы добавляем '0'
и 0
, получая '0'
. В противном случае мы добавляем 1
и '0'
, получая '1'
. Это работает, потому что в C символы являются числовым типом, поэтому вы можете добавить их; символ после '0'
равен '1'
, поэтому добавление 1
к '0'
дает '1'
.
Затем мы сохраняем этот результат ('1'
или '0'
) в нашей строке.
Наконец, мы сдвигаем number
по порядку, избавляясь от части, на которую мы только что посмотрели: number = number >> 1;
.