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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Побитовое ИЛИ 
V
    Опции темы
DissDoc
Дата 4.5.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Может не совсем точно тема стоит. Попробую описать то, чего хочу. 
Частенько встречаю конструкцию функций типа TEST|NO_TEST, т.е. можно написать в функцию параметр вот так
Код

func_test(TEST);
func_test(TEST|NO_TEST);

И например в первом случае выведет строку test, а во втором test with no test.
И вопрос - как это реализуется?

P.S. ох, надеюсь понятно ((
PM MAIL WWW   Вверх
ivg
Дата 4.5.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


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

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



Код

public class Test {

    public static final int TEST = 0x1;
    public static final int NO_TEST = 0x2;
    public static final int NOTNOW_TEST = 0x4;

    public static void main(String[] args) {
        func_test(TEST);
        func_test(TEST | NO_TEST);
    }

    public static void func_test(int flag) {
        StringBuilder sb = new StringBuilder();
        if ((flag & TEST) != 0)
            sb.append("test");
        if ((flag & NO_TEST) != 0) {
            conjunction(sb);
            sb.append("no test");
        }
        if ((flag & NOTNOW_TEST) != 0) {
            conjunction(sb);
            sb.append("future test");
        }
        System.out.println(sb.toString());
    }
    
    private static void conjunction(StringBuilder sb) {
        if (sb.length() > 0)
            sb.append(" with ");
    }
}


Это сообщение отредактировал(а) ivg - 4.5.2009, 14:04
PM MAIL   Вверх
DissDoc
Дата 4.5.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Один только вопрос - не понятны значения 0х1, 0х2, 0х4 и их зависимость друг от друга =\
PM MAIL WWW   Вверх
NeoNYura
Дата 4.5.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ivg


а в  блоках if разве не XOR должен быть? (^)
PM MAIL   Вверх
ivg
Дата 4.5.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


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

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



0xHexDigits - целое число в hex-формате. Можно было бы написать 1, 2, 4, 8, 16 и т.д. Соответствуют взведённому биту в двоичном представлении. Остальное наверное понятно, судя по названию темы.

Это сообщение отредактировал(а) ivg - 4.5.2009, 14:24
PM MAIL   Вверх
JVMan
Дата 4.5.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(DissDoc @ 4.5.2009,  14:07)
Один только вопрос - не понятны значения 0х1, 0х2, 0х4 и их зависимость друг от друга =\

Это битовые маски.

Т.е например
0X1 - ...001
0Х2 - ...010
0х4 - ...100
PM MAIL   Вверх
ivg
Дата 4.5.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


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

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



Цитата(NeoNYura @  4.5.2009,  16:20 Найти цитируемый пост)
а в  блоках if разве не XOR должен быть? (^)

Например?
PM MAIL   Вверх
NeoNYura
Дата 4.5.2009, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ivg
не правильно посмотрел, извиняюсь

PM MAIL   Вверх
pompei
Дата 4.5.2009, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Смотрим по двоичному представлению чисел...
Код

1 -> 0x1 -> 0000 0001 - *
2 -> 0x2 -> 0000 0010 - *
3 -> 0x3 -> 0000 0011
4 -> 0x4 -> 0000 0100 - *
5 -> 0x5 -> 0000 0101
6 -> 0x6 -> 0000 0110
7 -> 0x7 -> 0000 0111
8 -> 0x8 -> 0000 1000 - *
9 -> 0x9 -> 0000 1001
10 -> 0xA -> 0000 1010
11 -> 0xB -> 0000 1011
12 -> 0xC -> 0000 1100
13 -> 0xD -> 0000 1101
14 -> 0xE -> 0000 1110
15 -> 0xF -> 0000 1111
16 -> 0x10 -> 0001 0000 - *
17 -> 0x11 -> 0001 0001
...
32 -> 0x20 -> 0010 0000 - *
...
64 -> 0x40 -> 0100 0000 - *
...

* - используем это число, потому что одна "1"


Теперь только с теми которые со свёздочками (*)
(Операцию нужно проводить с каждым битом: TRUE=1, FALSE=0, | - или, & - и)
Код

2 | 8 -> 0000 1010

(2 | 8) & 1 -> 0000 0000 == 0

(2 | 8) & 2 -> 0000 0010 -> 2 > 0

(2 | 8) & 4 -> 0000 0000 == 0

(2 | 8) & 8 -> 0000 1000 -> 4 > 0

(2 | 8) & 16 -> 0000 0000 == 0



Это сообщение отредактировал(а) pompei - 4.5.2009, 14:34
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
DissDoc
Дата 5.5.2009, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

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

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


 




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


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

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