转换整数中的比特位(例如将001转为011)

    技术2024-01-05  97

    概述

    随机一个整数,将其比特位001转为011。

    思路

    按位比较输入整数的比特位,遇到001,就转为011,然后移3个位;否则移1个位。

    源码

    本文主要是以C、C++、QT为基础进行编程,运行前简单修改即可。测试入口函数为 void Test_Convert_Bits()。

    #include <qglobal.h> #include "QtMath" #include "QTime" //将整数中的001转为011 void Test_Convert_Bits() { quint8 i=0; QString string; quint32 input; QTime time = QTime::currentTime(); qsrand(time.msec()); input = (quint32)qrand(); string = QString::number(input, 10); qDebug()<<"input:"<<input<<string; while(i<=(32-3)) { if(((input>>i)&0x7) == 1) { input |= (3<<i); i += 3; } else { i += 1; } } string = QString::number(input, 10); qDebug()<<"output:"<<input<<string; }

    运行结果

    input: 2615 “2615” output: 6775 “6775”

    Processed: 0.010, SQL: 9