Mam numer i chcę wydrukować go w formacie binarnym. Nie chcę tego robić, pisząc algorytm. Czy jest w tym jakaś wbudowana funkcja w Javie?
277
Zakładając, że masz na myśli „wbudowany”:
int x = 100;
System.out.println(Integer.toBinaryString(x));
Zobacz dokumentację liczb całkowitych .
( Long
ma podobną metodę, BigInteger
ma metodę instancji, w której można określić podstawę).
Tutaj nie musisz polegać tylko na formacie binarnym lub innym ... dostępna jest jedna elastyczna funkcja wbudowana, która wypisuje dowolny format w twoim programie .. Integer.toString (int, reprezentacja);
źródło
toBinaryString
używa wyjścia uzupełnienia do dwóch,toString
ukrywa liczbę określoną bazę i umieszcza przed nią znak ujemny, więctoString(-8, 2) == "-1000"
źródło
Potrzebowałem czegoś, aby ładnie wydrukować rzeczy i oddzielić bity co n-bit. Innymi słowy, wyświetlaj wiodące zera i pokazuj coś takiego:
Oto co napisałem:
Wywołaj to w ten sposób:
źródło
result.replace(result.length() - 1, result.length(), "");
jest to wymagane? Jak mijamy,int
który jest już 32-bitowy. Co zastępujemy w drugiej ostatniej linii?String
klasy,trim
aby osiągnąć ten sam efekt.Stara szkoła:
źródło
System.out.println
i&
są wbudowane;)Wynik:
źródło
sprawdź tę logikę można przekonwertować liczbę na dowolną bazę
LUB
źródło
Jest to najprostszy sposób drukowania wewnętrznej reprezentacji binarnej liczby całkowitej. Na przykład : jeśli weźmiemy n jako 17, wynik będzie następujący: 0000 0000 0000 0000 0000 0000 0001 0001
źródło
Po prostu spróbuj. Jeśli zakres drukuje tylko wartości binarne podanej wartości całkowitej. Może być dodatni lub ujemny.
Wejście
5
Wynik
101
źródło
Rozwiązanie z wykorzystaniem 32-bitowej maski wyświetlacza,
źródło
Proste i najłatwiejsze rozwiązanie.
źródło
Tutaj są już dobre odpowiedzi na to pytanie. Ale tak właśnie próbowałem (i może to być najłatwiejsza logika → modulo / divide / add ):
źródło
Pytanie jest trudne w Javie (i prawdopodobnie także w innym języku).
Liczba całkowita jest 32-bitowy podpisany typ danych, ale Integer.toBinaryString () zwraca łańcuchowej reprezentacji argumentu jako całkowitą bez znaku całkowitej bazy 2.
Tak więc Integer.parseInt (Integer.toBinaryString (X), 2) może wygenerować wyjątek (podpisany vs. niepodpisany).
Bezpiecznym sposobem jest użycie Integer.toString (X, 2); wygeneruje to coś mniej eleganckiego:
-11110100110
Ale to działa !!!
źródło
Myślę, że jest to najprostszy jak dotąd algorytm (dla tych, którzy nie chcą korzystać z wbudowanych funkcji):
Przykład:
convertNumber (1) -> „0b1”
convertNumber (5) -> „0b101”
convertNumber (117) -> „0b1110101”
Jak to działa: pętla while przesuwa liczbę w prawo (zamieniając ostatni bit z drugiego na ostatni itd.), Pobiera wartość ostatniego bitu i umieszcza go w StringBuilder, powtarza, aż nie pozostaną żadne bity (wtedy a = 0).
źródło
źródło
Wypróbuj w ten sposób:
}
10010100
źródło
Binarna reprezentacja podanego int x z lewymi dopełnionymi zerami:
źródło
Wprowadź dowolną liczbę dziesiętną jako dane wejściowe. Następnie wykonujemy operacje takie jak modulo i dzielenie, aby przekonwertować dane wejściowe na liczbę binarną. Oto kod źródłowy programu Java do konwersji wartości całkowitych na binarne i liczba bitów tego pliku binarnego dla jego liczby dziesiętnej. Program Java został pomyślnie skompilowany i uruchomiony w systemie Windows. Wyjście programu pokazano również poniżej.
źródło
Ponieważ odpowiedź nie jest akceptowana, być może twoje pytanie dotyczyło sposobu zapisania liczby całkowitej w pliku binarnym. java.io.DataOutputStream może być tym, czego szukasz: https://docs.oracle.com/javase/8/docs/api/java/io/DataOutputStream.html
źródło
Możesz użyć maski bitowej (1 << k) i wykonać operację AND z liczbą! 1 << k ma jeden bit w pozycji k!
źródło
Działa z podpisanymi i niepodpisanymi wartościami, przy użyciu potężnej manipulacji bitami i generuje pierwsze zera po lewej stronie.
źródło