#include <iostream>
#include <bitset>
#include <cstdint>
int main() {
std::uint8_t a = 0b1111'1111;
std::uint8_t drop_lsb_0bits = a & -1; // 変更なし
std::uint8_t drop_lsb_1bits = a & -2; // 2の倍数にする
std::uint8_t drop_lsb_2bits = a & -4; // 4の倍数にする
std::cout << std::bitset<8>(drop_lsb_0bits) << std::endl;
std::cout << std::bitset<8>(drop_lsb_1bits) << std::endl;
std::cout << std::bitset<8>(drop_lsb_2bits) << std::endl;
}
出力:
11111111
11111110
11111100