循环遍历长字节在64位系统上打印两次字节

时间:2018-01-20 18:39:24

标签: c++ binary

这只发生在64位系统上。

#include <iostream>

void printBits(unsigned long code) {
    long bit = (sizeof(code) * 8) - 1;

    std::cout << code << std::endl;

    while (bit >= 0) {
        bool value = code & (1 << bit--);

        std::cout << value;
    }

    std::cout << std::endl;
}

int main() {
    printBits(12345);
    return 0;
}

这是64位系统的输出(重复两次);

0000000000000000001100000011100100000000000000000011000000111001

这是用-m32编译的输出(正确);

00000000000000000011000000111001

这是什么原因以及如何纠正?

0 个答案:

没有答案