Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Разложить byte на биты


Автор: barin_Student 22.4.2009, 07:54
Вопрос как работать в java с битами ? Мне нужно чтоб я мог для байта устанавливать биты как при работе с масивом.
Например что то около такого:
byte bitsVector={"10101111"};
ну получить массив 1 и 0 из байта.
вот что то вроде такого, или пример метода который это позволит сделать.  
Честное пионерское искал я в google на тему java и работа с битами. и ничаго не нашел,толкового..

Добавлено через 12 минут и 8 секунд
http://forum.vingrad.ru/topic-152305.html , вроде нашел что мне нужно счас попробую.

Автор: ivg 22.4.2009, 08:10
Цитата(barin_Student @  22.4.2009,  09:54 Найти цитируемый пост)
java и работа с битами

http://java.sun.com/javase/6/docs/api/java/util/BitSet.html Хотя для вашей задачки может быть избыточно. Тогда сдвиги и битовые логические операции.

Автор: barin_Student 22.4.2009, 08:12
Код

boolean bitNumber8 = 0x40 & bytes;

Вот на такой код ругаеться что я получаю int а хочу присвоить к boolean smile 

Автор: chaos 22.4.2009, 08:18
Цитата(barin_Student @ 22.4.2009,  05:12)
Код

boolean bitNumber8 = 0x40 & bytes;

Вот на такой код ругаеться что я получаю int а хочу присвоить к boolean smile

Код

boolean bitNumber8 = 0x40 & bytes ? true : false;

Автор: barin_Student 22.4.2009, 08:21
Код

boolean bitNumber8 = 0x40 & bytes ? true : false;

-> Cannot convert from int to boolean

Автор: ivg 22.4.2009, 08:23
Код

boolean bitNumber8 = (0x40 & bytes) != 0;
 smile 

Автор: chaos 22.4.2009, 08:25
вот те пища для ума smile

Код

byte value = 78;
for (byte i = 7; i >= 0; i--) {
    System.out.print((value & (1 << i)) != 0 ? 1 : 0);
}
System.out.println();


Добавлено через 2 минуты и 18 секунд
Цитата(barin_Student @ 22.4.2009,  05:21)
Код

boolean bitNumber8 = 0x40 & bytes ? true : false;

-> Cannot convert from int to boolean

С++ привычка smile
надо 
Код

(0x40 & bytes) != 0

Автор: barin_Student 22.4.2009, 08:28
Цитата(ivg @ 22.4.2009,  11:23)
Код

boolean bitNumber8 = (0x40 & bytes) != 0;
 smile

спс, счас проверю. smile 

Автор: barin_Student 22.4.2009, 08:43
а для того что бы составить байт из битов есть что нибудь умнее (какой нить метод) чем просто возведение в  2 степень?
10101011
76543210
2^0=1
+
2^1=2
+
2^3=8
+
2^5=32
+
2^7=64
итого 171
Вот чем можно заменить такие вычисления?

Автор: chaos 22.4.2009, 09:26
Цитата(barin_Student @ 22.4.2009,  05:43)
а для того что бы составить байт из битов есть что нибудь умнее (какой нить метод) чем просто возведение в  2 степень?
10101011
76543210
2^0=1
+
2^1=2
+
2^3=8
+
2^5=32
+
2^7=64
итого 171
Вот чем можно заменить такие вычисления?

а что не устраивает в таких вычислениях?

Автор: math64 22.4.2009, 09:35
Есть уже готовые методы:
Код

byte b = Byte.parseByte("10101011", 2);
System.out.println(Integer.toBinaryString(b & 0xFF));

Автор: SoulKeeper 22.4.2009, 10:10
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html

Автор: barin_Student 22.4.2009, 12:22
спс , счас попробую smile 

Автор: barin_Student 22.4.2009, 12:42
Цитата(math64 @ 22.4.2009,  12:35)
Есть уже готовые методы:
Код

byte b = Byte.parseByte("10101011", 2);
System.out.println(Integer.toBinaryString(b & 0xFF));

Спасибо вам огромное , все вопрос закрыт smile  smile  smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)