#include "stdafx.h"
#include "iostream"
using namespace std;
//-- 依次打印出每个二进制位
void showBits(int var){
//char 和 unsigned char 没有什么不同都是一个字节,唯一的区别是char的最高位是符号位-128~127,unsigned char 是0~255
typedef unsigned char uc;
uc * p = (uc*)&var;
printf("%s", "依次取出一个一个字节,并打印");
//-- 依次取出一个一个字节,并打印(小端系统 字节序相反)
printf("%x\n", *p); //-- 64
printf("%x\n", *(p + 1)); //-- 63
printf("%x\n", *(p + 2)); //-- 62
printf("%x\n", *(p + 3)); //-- 61
//-- 取var之外的字节
printf("%x\n", *(p - 1));
cout << "依次取出字节 打印完毕" << endl;
getchar();
for (int i = 0; i < 4; i++)
{
int temp = *p++;
for (int j = 0; j < 8; j++)
{
temp & 0x80 ? putchar('1') : putchar('0');
temp = temp << 1;
}
putchar(' ');
}
//--0110 0100 0110 0011 0110 0010 0110 0001 即0x64636261
getchar();
}
int _tmain(int argc, _TCHAR* argv[])
{
int v1 = 0x61626364;
showBits(v1);
return 0;
}
知识点: 逐字节读取内存,逐位进行按位与& (遇0得0)