c/c++代码 No.14 转置一个值中的最后n位

来源:互联网 发布:长安大学人工智能 编辑:程序博客网 时间:2024/04/29 09:02
#include <iostream>#include <iomanip>using namespace std;char* getBit(int n, char *str) {    int size = 8 * sizeof(int);    for (int i = size - 1; i >= 0; n >>= 1) {        str[i--] = (n & 1) + '0';    }    str[size] = '\0';    return str;}int toBit(char *str) {    int n = 0;    for (int i = 0; str[i] != '\0'; i++) {        n <<= 1;        n += str[i] - '0';    }    return n;}int invert_end(int n, int w) {    int mask = 0;    int bitval = 1;    while (w-- > 0) {        mask |= bitval;        bitval <<= 1;    }    return n ^ mask;}int main(void) {    int a = 125;    int b = 6;    char *str = new char[101];    str = getBit(a, str);    cout << setfill('0') << setw(8 * sizeof(int)) << str << endl;    cout << toBit(str) << endl;    a = invert_end(a, b);    str = getBit(a, str);    cout << setfill('0') << setw(8 * sizeof(int)) << str << endl;    cout << toBit(str) << endl;    return 0;}
0 0