Problemas con condicionales y lectura de pins en binario

Hola, recurro a vosotros a ver si alguien me puede echar un cable.... os pongo en situación.
quiero usar un attiny10 y de todos es sabido la pequeña capacidad que tiene, he mirado por internet como se puede reducir los programas, y comentan de escribir directamente en los puertos en binario y trabajar sobre ellos.

Queria hacer una prueba y he tenido un problema, si creo una condición de la forma "normal" If (digitalRead(pin) la condición que sea y digitalRead(pin)) no tengo problemas pero cuando intento cambiar ese digitalRead(pin) por leer el puerto directamente me da problemas, pongo la prueba con la que estoy enredando...

void setup() {
     DDRB = B00100000; //configuro puertos como entrada y salida 
     Serial.begin(9600); //inicio serial
}


void loop() {
  if (((PINB & (1<<PB0))==1) && (PINB & (1<<PB1)!=0)){ //leo puerto pb0 si es igual a 1 y la lectura del puerto pb1 no es 0 (es 1) continua con la condicion
    delay(1000); 
    Serial.println("1"); 
  } 
  
  if (((PINB & (1<<PB0))==0) && (PINB & (1<<PB1)==0)){ //leo puerto pb0 si es igual a 0 y la lectura del puerto pb1 es igual a 0 continua con la condicion
    delay(1000); 
    Serial.println("2"); 
  }
  
  
 /* if (((PINB & (1<<PB0))==1) && (PINB & (1<<PB1)!=1)){ //leo puerto pb0 si es igual a 1 y la lectura del puerto pb1 no es 1 (es 0) continua con la condicion
    delay(1000);  
    Serial.println("3");
  }
  */
}

Tal y como esta me funciona, pero si activo la tercera condicional que hay, no funciona correctamente, por el puerto serie solo sale 1 3 1 3 1 3 1 3 1 3 no sale 3 como digo si no utilizo esa tercera condición no hay problema me pone 1 1 1 1 1 cambio la configuración y pone 2 2 2 2

Seguramente sera una tontada pero sinceramente no se por donde va el tema.
Gracias!

P.D he editado el codigo que lo he copiado mal del portatil...

Bueno.... anoche aun seguí dándole vueltas y esta vez busque por google pero por leer puertos en avr en lugar de arduino.... y lo he solucionado, lo que pasa es que yo creo que esto ya lo mire antes, supongo que alguna cosa copiaría mal...

codigo viejo

 if (((PINB & (1<<PB0))==1) && (PINB & (1<<PB1)!=0)){ //leo puerto pb0 si es igual a 1 y la lectura del puerto pb1 no es 0 (es 1) continua con la condición
    delay(1000);
    Serial.println("1");
  }

codigo nuevo

 if ((PINB&(1<<PB0))==0 && (PINB&(1<<PB1)!=0){ //leo puerto pb0 si es igual a 1 y la lectura del puerto pb1 no es 0 (es 1) continua con la condición
    delay(1000);
    Serial.println("1");
  }

copiando y cambiando las condiciones funciona bien...la única diferencia que veo es que hay menos paréntesis y el 1, pero creía que así estaba bien como funcionaba....