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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка битов, объясните как проверить бит? 
:(
    Опции темы
jsa
Дата 21.5.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 20



Hi All

есть целое число например 184, в двоичке 10111000, как проверить что 8 бит это еденица, а 7 - ноль, вообще не доганяю  smile  как сделать проверку  smile 


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
Metal_Heart
Дата 21.5.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


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

Репутация: 4
Всего: 12



Такие элементарные вещи спрашивать  smile 
Код

void check8bit(byte bytes)
{
 boolean bitNumber8 = 0x80 & bytes;

 if(bitNumber8) System.out.println("8-ой бит установлен в 1");
  else System.out.println("8-ой бит установлен в 0");
}


Возможны синтаксические ошибки. Показал только идею, остальное - догадайся сам!


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
jsa
Дата 21.5.2007, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 20



т.е. если мне нужно проверить 7 бит то нужно 
Код

 boolean bitNumber8 = 0x40 & bytes;

вроде так, но почему именно так? плз, разъясните теорию


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
Metal_Heart
Дата 21.5.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


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

Репутация: 4
Всего: 12



2^0 = 1 (- 1 бит)
2^1 = 2 (- 2 бит)
...
2^6 = 40h (- 7 бит)
2^7 = 80h (- 8 бит)

см. на степень и + 1 к ней ..



--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
nornad
Дата 21.5.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 16
Всего: 31



Цитата(jsa @  21.5.2007,  16:12 Найти цитируемый пост)
плз, разъясните теорию

Почитай про битовую логику.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
batigoal
Дата 21.5.2007, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(jsa @  21.5.2007,  14:12 Найти цитируемый пост)
вроде так, но почему именно так? плз, разъясните теорию 

Логика такая:

Исходное число: 156 (в десятичной) = 10011100 (в двоичной)

Допустим, мы хотим проверить седьмой бит. Тогда мы используем маску 01000000 (в шестнадцатеричной - 0x80). При использовании логической оперпации И, биты, пересекшиеся с 0, будут сброшены, а с 1 - оставлены неизмененными:

10011100 +
01000000 =
00000000 (или просто 0, т.е. false)

Для проверки пятого бита используем 00010000 (0х10):

10011100 +
00010000 =
00010000 (16, т.е. true)

Это сообщение отредактировал(а) batigoal - 21.5.2007, 17:28


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
jsa
Дата 22.5.2007, 03:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 20



batigoal, большое сенькс  smile , я протупил вообще, ведь нам преподовали булеву алгебру, совсем забыл 


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
olegrolik
Дата 22.5.2007, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Самый простой вариант (имхо) такой: Проверка бита (bit) в числе (value) на наличие единицы.
Код

void Check_Bit(unsigned int value, int bit) {
return(value&(1<<bit))>=1;

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


карманная тигра
***


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

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



Цитата(olegrolik @  22.5.2007,  09:11 Найти цитируемый пост)
unsigned int

В джаве такого нет



Цитата(olegrolik @  22.5.2007,  09:11 Найти цитируемый пост)
void Check_Bit(

воид не очень вяжется с ретурном smile
Цитата(olegrolik @  22.5.2007,  09:11 Найти цитируемый пост)
return(value&(1<<bit))>=1


Но мысль наглядная smile



--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
olegrolik
Дата 22.5.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(chief39 @ 22.5.2007,  12:22)
Цитата(olegrolik @  22.5.2007,  09:11 Найти цитируемый пост)
unsigned int

В джаве такого нет



Цитата(olegrolik @  22.5.2007,  09:11 Найти цитируемый пост)
void Check_Bit(

воид не очень вяжется с ретурном smile
Цитата(olegrolik @  22.5.2007,  09:11 Найти цитируемый пост)
return(value&(1<<bit))>=1


Но мысль наглядная 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.0819 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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