Potrzebuję uzyskać n-ty bit liczby całkowitej, podpisanej lub niepodpisanej, w Ruby.Bit ekstraktu w Ruby Integers
x = 123 # that is 1111011
n = 2 # bit 2 is ...0
Poniższy fragment kodu nie działa w przypadku ogólnym:
x.to_s(2)[-(n+1)] #0 good! but...
powodu liczb ujemnych nie reprezentowanych jako 2-uzupełnienie:
-123.to_s(2) # "-1111011"
Więc jak postępować ?
wyniki 1 i 0 są odwrócone. Próbowałem edytować twój wpis bez powodzenia – JCLL
@JCLL: Dzięki! To jest jeden przypadek, w którym wycinanie i wklejanie faktycznie * uniemożliwiło * błąd :-) –
Heh, kolejny fajny operator Ruby: [] na Fixnum, jakoś tak zwyczajnie jak na dzień w dokumentach, ale zakopany poza zasięgiem wzroku w tym samym czasie. – DigitalRoss