Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разложить byte на биты, и упаковать биты в byte 
V
    Опции темы
barin_Student
Дата 22.4.2009, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



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

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


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
ivg
Дата 22.4.2009, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 33
Всего: 81



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

java.util.BitSet Хотя для вашей задачки может быть избыточно. Тогда сдвиги и битовые логические операции.
PM MAIL   Вверх
barin_Student
Дата 22.4.2009, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Код

boolean bitNumber8 = 0x40 & bytes;

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


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
chaos
Дата 22.4.2009, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 1
Всего: 44



Цитата(barin_Student @ 22.4.2009,  05:12)
Код

boolean bitNumber8 = 0x40 & bytes;

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

Код

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


Это сообщение отредактировал(а) chaos - 22.4.2009, 08:19
PM WWW   Вверх
barin_Student
Дата 22.4.2009, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Код

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

-> Cannot convert from int to boolean


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
ivg
Дата 22.4.2009, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 33
Всего: 81



Код

boolean bitNumber8 = (0x40 & bytes) != 0;
 smile 
PM MAIL   Вверх
chaos
Дата 22.4.2009, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 1
Всего: 44



вот те пища для ума 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


Это сообщение отредактировал(а) chaos - 22.4.2009, 08:26
PM WWW   Вверх
barin_Student
Дата 22.4.2009, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Цитата(ivg @ 22.4.2009,  11:23)
Код

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

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


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
barin_Student
Дата 22.4.2009, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



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


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
chaos
Дата 22.4.2009, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 1
Всего: 44



Цитата(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
Вот чем можно заменить такие вычисления?

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

PM WWW   Вверх
math64
Дата 22.4.2009, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Есть уже готовые методы:
Код

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

PM   Вверх
SoulKeeper
Дата 22.4.2009, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: 11
Всего: 15



PM MAIL   Вверх
barin_Student
Дата 22.4.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



спс , счас попробую smile 


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
barin_Student
Дата 22.4.2009, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



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

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

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


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0514 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.