qt 判断一个char的每个位是0还是1,把结果保存在一个bool数组里

在Qt中,如果你想判断一个char类型变量的每一位是0还是1,并将结果保存在一个bool数组中,你可以通过位操作来实现。由于char通常是8位,所以你需要一个大小为8的bool数组来保存结果。

以下是一个示例代码,展示了如何实现这一功能:


#include <QCoreApplication>  
#include <QDebug>  
#include <vector>  
  
int main(int argc, char *argv[]) {  
    QCoreApplication a(argc, argv);  
  
    char c = 0b10101010; // 二进制表示,方便演示  
    std::vector<bool> bits(8);  
  
    for (int i = 0; i < 8; ++i) {  
        // 使用位操作来检查每一位是0还是1  
        bits[i] = (c & (1 << i)) != 0;  
    }  
  
    // 打印结果  
    for (int i = 0; i < 8; ++i) {  
        qDebug() << "Bit" << i << ":" << bits[i];  
    }  
  
    return a.exec();  
}

这段代码首先定义了一个char变量c,其值为二进制10101010(仅为示例)。然后,它创建了一个大小为8的bool数组bits来保存每位的结果。接下来,使用一个循环来遍历char变量的每一位,通过位与操作(&)和位移操作(<<)来判断该位是0还是1,并将结果保存在bool数组中。最后,使用另一个循环来打印出每位的结果。

把这个功能变更一个函数

当然,你可以将这个功能封装成一个函数,使其更加模块化和可重用。以下是一个示例函数,它接受一个char作为输入,并返回一个包含8个布尔值的std::vector<bool>,表示该字符的每一位是0还是1。



#include <vector>  
  
std::vector<bool> getCharBits(char c) {  
    std::vector<bool> bits(8);  
    for (int i = 0; i < 8; ++i) {  
        bits[i] = (c & (1 << i)) != 0;  
    }  
    return bits;  
}

你可以在你的程序中调用这个函数来获取一个字符的位表示。下面是一个完整的示例,包括函数的定义和使用:


#include <iostream>  
#include <vector>  
  
std::vector<bool> getCharBits(char c) {  
    std::vector<bool> bits(8);  
    for (int i = 0; i < 8; ++i) {  
        bits[i] = (c & (1 << i)) != 0;  
    }  
    return bits;  
}  
  
int main() {  
    char myChar = 'A'; // 你可以替换成任何字符进行测试  
    std::vector<bool> charBits = getCharBits(myChar);  
  
    std::cout << "The bits of character '" << myChar << "' are:" << std::endl;  
    for (int i = 0; i < 8; ++i) {  
        std::cout << "Bit " << i << ": " << charBits[i] << std::endl;  
    }  
  
    return 0;  
}

在这个示例中,getCharBits函数被定义来返回一个std::vector<bool>,它包含了输入字符c的每一位的布尔表示。main函数中,我们调用getCharBits函数来获取字符'A'的位表示,并将每一位打印到控制台。你可以将'A'替换成任何你想要测试的字符。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值