2014-01-10 6 views
1

Когда я читал о классе BitSet в java, я наткнулся на приведенный ниже пример. является логикой класса BitSet и, или & xor аналогична логике логических логических схем?Класс BitSet в java

может кто-нибудь объяснить мне, как или метод работает в приведенном выше примере? потому что, когда я прочитал в гадательных документы о методе или он говорит ::

общественности недействительным или (BitSet комплект)

Выполняет логическое ИЛИ этого набора бит с битом, установленным аргументом. Этот набор бит изменяется так, что бит в нем имеет значение true, если и только если он либо уже имел значение true, либо соответствующий бит в аргументе набора бит имел значение true.

Параметры: набор - бит, установленный

Ниже приведены коды ::

import java.util.BitSet; 

public class BitSetDemo { 

    public static void main(String args[]) { 
    BitSet bits1 = new BitSet(16); 
    BitSet bits2 = new BitSet(16); 

    // set some bits 
    for(int i=0; i<16; i++) { 
     if((i%2) == 0) bits1.set(i); 
     if((i%5) != 0) bits2.set(i); 
    } 
    System.out.println("Initial pattern in bits1: "); 
    System.out.println(bits1); 
    System.out.println("\nInitial pattern in bits2: "); 
    System.out.println(bits2); 

    // AND bits 
    bits2.and(bits1); 
    System.out.println("\nbits2 AND bits1: "); 
    System.out.println(bits2); 

    // OR bits 
    bits2.or(bits1); 
    System.out.println("\nbits2 OR bits1: "); 
    System.out.println(bits2); 

    // XOR bits 
    bits2.xor(bits1);e 
    System.out.println("\nbits2 XOR bits1: "); 
    System.out.println(bits2); 
    } 
} 

The Output of above program is 

Initial pattern in bits1: 
{0, 2, 4, 6, 8, 10, 12, 14} 

Initial pattern in bits2: 
{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14} 

bits2 AND bits1: 
{2, 4, 6, 8, 12, 14} 

bits2 OR bits1: 
{0, 2, 4, 6, 8, 10, 12, 14} 

bits2 XOR bits1: 
{} 

so in the above example result of or should be {0,1,2,3,4,6,7,8,9,10,11,12,13,14} according to oracle docs instead of {0, 2, 4, 6, 8, 10, 12, 14}. or am I misunderstood the explanation? 

Really appreciate the help. 

ответ

0

Проблема в том, что вы вычислить bits2.or(bits1) со значением bits2 уже модифицированного от and вызова. Вместо того, чтобы звонить or, and и xor непосредственно на bits2, попробуйте использовать отдельную копию bits2 для каждого теста.

+0

Благодарю вас так много .. Я думаю, что вмятина на все ок модифицированную bits2 .. спасибо .. – Myrna

0

Значение бит2 было изменено во время операции and по вызову bits2.and(bits1). Значение bits2 снова изменено следующими or и xor операций вызовов bits2.or(bits1) и bits2.xor(bits1)

Смежные вопросы