// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/01/And16.hdl
/**
* 16-bit bitwise And:
* for i = 0..15: out[i] = (a[i] and b[i])
*/
CHIP And16 {
IN a[16], b[16];
OUT out[16];
PARTS:
Nand(a=a[0],b=b[0],out=x0);
Not(in=x0,out=out[0]);
Nand(a=a[1],b=b[1],out=x1);
Not(in=x1,out=out[1]);
Nand(a=a[2],b=b[2],out=x2);
Not(in=x2,out=out[2]);
Nand(a=a[3],b=b[3],out=x3);
Not(in=x3,out=out[3]);
Nand(a=a[4],b=b[4],out=x4);
Not(in=x4,out=out[4]);
Nand(a=a[5],b=b[5],out=x5);
Not(in=x5,out=out[5]]);
Nand(a=a[6],b=b[6],out=x6);
Not(in=x6,out=out[6]);
Nand(a=a[7],b=b[7],out=x7);
Not(in=x7,out=out[7]);
Nand(a=a[8],b=b[8],out=x8);
Not(in=x8,out=out[8]);
Nand(a=a[9],b=b[9],out=x9);
Not(in=x1,out=out[9]);
Nand(a=a[10],b=b[10],out=x10);
Not(in=x10,out=out[10]);
Nand(a=a[11],b=b[11],out=x11);
Not(in=x11,out=out[11]);
Nand(a=a[12],b=b[12],out=x12);
Not(in=x12,out=out[12]);
Nand(a=a[13],b=b[13],out=x13);
Not(in=x13,out=out[13]]);
Nand(a=a[14],b=b[14],out=x14);
Not(in=x14,out=out[14]);
Nand(a=a[15],b=b[15],out=x15);
Not(in=x15,out=out[15]);
}