Ho bisogno di ottenere il bit n-esimo di un intero, sia firmato che non firmato, in Ruby.bit di estrazione in Ruby Integers
x = 123 # that is 1111011
n = 2 # bit 2 is ...0
il seguente pezzo di codice non funziona nel caso generale:
x.to_s(2)[-(n+1)] #0 good! but...
a causa di numeri negativi non rappresentati da 2-complemento:
-123.to_s(2) # "-1111011"
Così come procedere ?
i risultati 1 e 0 sono invertiti. Ho provato a modificare il tuo post senza successo – JCLL
@JCLL: Grazie! Questo è un caso in cui il "taglia e incolla" avrebbe effettivamente * prevenuto * un bug :-) –
Heh, ancora un altro simpatico operatore Ruby: [] su Fixnum, in qualche modo sia chiaro come il giorno nei documenti, ma sepolto allo stesso tempo allo stesso tempo. – DigitalRoss