【发布时间】:2020-11-10 12:42:12
【问题描述】:
我在 C++ 中实现了print_in_binary_format() 函数,它(如名称所述)以二进制形式打印 8 位数字:
void print_in_binary_format(std::uint8_t number)
{
for (int bit_index = 7; bit_index >= 0; --bit_index) {
std::cout << ((number & (1U << bit_index)) ? '1' : '0');
}
std::cout << '\n';
}
但它没有按预期工作,即:
-
输入:2
-
输出:00110010
-
输入:0
-
输出:00110000
我知道在 C++ 中我可以使用 bitset 库,但事实并非如此。
我想知道这个功能是怎么回事,我的脑子卡住了!
有整个程序可以测试:
#include <cstdint>
#include <iostream>
std::uint8_t read_user_number();
void print_in_binary_format(std::uint8_t number);
int main()
{
std::uint8_t number {};
number = read_user_number();
print_in_binary_format(number);
return EXIT_SUCCESS;
}
std::uint8_t read_user_number()
{
std::cout << "Enter a number (0-255): ";
std::uint8_t user_number {};
std::cin >> user_number;
return user_number;
}
void print_in_binary_format(std::uint8_t number)
{
for (int bit_index = 7; bit_index >= 0; --bit_index) {
std::cout << ((number & (1U << bit_index)) ? '1' : '0');
}
std::cout << '\n';
}
【问题讨论】:
-
同上,请说明它是如何调用的。
-
您的功能正在运行。看起来您输入的内容不正确。
-
为什么不直接使用
std::bitset<8>?应该是一个班轮。