わかりました。これらすべての小さい数値を1つの32ビット数値にすべて1行にまとめようとしています。aは101、bは001、dは011なので、これらすべてのシフトを含むorは101001011、つまり331に戻ると思いましたが、coutは1を返します。
int main()
{
int a, b, c, d;
a = 5;
b = 1;
d = 3;
c = 0;
c = ( 0 || a << 8 || b << 5 || d << 2 );
cout << c;
system("PAUSE");
}