You can easily convert between decimal representation and a representation in terms of binary lists with `IntegerDigits`

and `FromDigits`

as in the following example:

```
IntegerDigits[57, 2]
{1, 1, 1, 0, 0, 1}
FromDigits[%, 2]
57
```

It is then straight forward to write functions for arithmetic like for example:

```
Multiply[a_, b_] := IntegerDigits[FromDigits[a] FromDigits[b], 2];
```

To get a multiplication operator symbol you can use for example:

```
MakeExpression[RowBox[{x_, "x", y_}], StandardForm] :=
MakeExpression[RowBox[{"Multiply", "[", x, ",", y, "]"}], StandardForm]
```

This then make to the following evaluation possible:

```
{1, 0, 0} x {1, 0, 1}
{1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0}
```

Maybe it would be better to use another symbol than "x"...

You could zero-pad (upsample) by 2*log2(length smaller operand) or something like that, and use

`ListConvolve[l1,l2,,{1,-1},Modulus->2]`

. – Daniel Lichtblau – 2014-03-31T22:26:59.257