The expression;
a:=b and c;
will not compile when a, b and c are Integer types. Boolean works of course but what about when you want to treat a 32 bit integer as an array of bits? Ada will not instantly let you do this.
Why? because there is perhaps nothing inherently about an integer that says it must be represented in binary and so why should operations exclusive to arrays of binary digits be able to be applied to the integer type.
If you want to use integers this way you probably need something a bit different. Two good types for dealing with this issue are "packed boolean arrays" or "modular types" and examples can be found here:
Ada 95 Quality and Style Guide: Chapter 10: Improving Performance - 10.6 TYPES.
Another family of common bitwise operations are shifts and roles which are addressed here;
Ada 95 Quality and Style Guide: Chapter 10: Improving Performance - 10.5 ALGORITHMS
Both these references are from;
Ada 95 Quality and Style Guide: Guidelines for Professional Programmers