Obtenha o complemento de um inteiro (Ruby)

Digamos que você tenha um número natural e queira primeiro sua representação binária. Podemos conseguir isso em Ruby com a seguinte linha de código:

binary_of_a_number = number.to_s(2).to_i

Assim que obtivermos a representação binária de um número, para obter seu complemento, você pode aplicar um XOR a todos os 1s ou apenas inverter os bits de maneira tradicional como esta –

def  get_integer_complement( number ) 
# convert into binary
binary_n
= number.to_s(2)
# save into integer array by splitting
binary_array
= binary_n.split("").map(&:to_i)
result_array
= []
binary_array
.each do |el|
el
== 0 ? result_array << 1 : result_array << 0
end
return result_array.join.to_i(2)
end