/**
  * La classe Bit permet de representer un bit, i.e. une information binaire (soit 0, 
  * soit 1). Cette classe nous permettra ensuite de definir la classe Cle.
 */
class Bit
{
	/** Attribut representant le bit courant */
	protected boolean bit;
	
	public Bit(boolean bit)
	{
		this.bit = bit;
	}
	
	public Bit(char c)
	{
		/*if (c == '0')
			bit = false;
		else
			bit = true;*/
		// autre solution
		bit = (c == '1');
	}
	
	public Bit not()
	{
		return new Bit(!bit);
	}
	
	public Bit xor(Bit b)
	{
		// return (bit && !b.bit || !bit && b.bit);
		return new Bit(bit ^ b.bit);
	}
	
	public Bit copie()
	{
		return new Bit(bit);
	}
	
	public String toString()
	{
		return bit ? "1" : "0";
	}
	
	public static void main(String[] args)
	{
		Bit b1 = new Bit(true);
		Bit b2 = new Bit('0');
		
		System.out.println(b1+" xor "+b2);
		System.out.println("b1 xor b2 = "+b1.xor(b2));
		
		//System.out.println("b1 xor b2 = "+new Bit('0').xor(new Bit('0')));
		//System.out.println("b1 xor b2 = "+new Bit('0').xor(new Bit('1')));
		//System.out.println("b1 xor b2 = "+new Bit('1').xor(new Bit('0')));
		//System.out.println("b1 xor b2 = "+new Bit('1').xor(new Bit('1')));
		
	}
}
