diff -r 37bacf3fa1f5 Objects/longobject.c --- a/Objects/longobject.c Thu Feb 11 10:26:27 2016 -0500 +++ b/Objects/longobject.c Thu Feb 11 14:33:13 2016 -0500 @@ -4445,6 +4445,10 @@ { PyObject *c; CHECK_BINOP(a, b); + if (Py_SIZE(a) == 1 && Py_SIZE(b) == 1) { + return PyLong_FromLong(((PyLongObject*)a)->ob_digit[0] & + ((PyLongObject*)b)->ob_digit[0]); + } c = long_bitwise((PyLongObject*)a, '&', (PyLongObject*)b); return c; } @@ -4454,6 +4458,10 @@ { PyObject *c; CHECK_BINOP(a, b); + if (Py_SIZE(a) == 1 && Py_SIZE(b) == 1) { + return PyLong_FromLong(((PyLongObject*)a)->ob_digit[0] ^ + ((PyLongObject*)b)->ob_digit[0]); + } c = long_bitwise((PyLongObject*)a, '^', (PyLongObject*)b); return c; } @@ -4463,6 +4471,10 @@ { PyObject *c; CHECK_BINOP(a, b); + if (Py_SIZE(a) == 1 && Py_SIZE(b) == 1) { + return PyLong_FromLong(((PyLongObject*)a)->ob_digit[0] | + ((PyLongObject*)b)->ob_digit[0]); + } c = long_bitwise((PyLongObject*)a, '|', (PyLongObject*)b); return c; }