È sarebbe naturalmente utilizzare Integer#to_s(2)
, String#to_i(2)
o "%b"
in un programma vero e proprio, ma, se siete interessati a come funziona la traduzione, questo metodo calcola la rappresentazione binaria di un dato intero utilizzando gli operatori di base:
def int_to_binary(x)
p = 0
two_p = 0
output = ""
while two_p * 2 <= x do
two_p = 2 ** p
output << ((two_p & x == two_p) ? "1" : "0")
p += 1
end
#Reverse output to match the endianness of %b
output.reverse
end
Per controllare funziona:
1.upto(1000) do |n|
built_in, custom = ("%b" % n), int_to_binary(n)
if built_in != custom
puts "I expected #{built_in} but got #{custom}!"
exit 1
end
puts custom
end
Quando dici di voler convertire gli operatori matematici in stringhe binarie, cosa intendi esattamente? Usa la rappresentazione ASCII scritta in binario? – bta
Immagino che tu volessi fare la famosa cosa dell'algoritmo genetico? :-) – nemesisfixx