Rust is an increasingly popular programming language positioned to be the best choice for hardware interfaces. It's often compared to C for its level of abstraction. This article explains how Rust can handle bitwise operations in a number of ways and offers a solution that provides both safety and ease of use.
Ada is really good at making this kind of bit hacking very transparent. It might be interesting to create a Ada version of the examples in the Article to illustrate this. Even the Rust solution looks really messy compared to how Ada approaches this.