I know that == was chosen for equality and = for assignment because they thought that people did more assignment than checking for equality—but surely they didn’t think that there would be more bit fiddling than boolean logic?
Why not go the other way around, with & and | being logical operators?
From the horse’s mouth:
Remember that C wasn’t created in a vacuum; much of its weirdness can be traced to BCPL and B.