C++将int型数据二进制输出

首先是大端、小端的判断:

void JudgeSystem()
{
	int a = 0b00000001;
	char * p = (char *)&a;
 
	if (0b00000001 == *p)
	{
		cout<<"小端"<

解决方式1:除二取余

void showbit2(int a){
	/*
	除二取余: 
		6/2=3 % 0
		3/2=1 % 1
		1/2=0 % 1
		=> 110
	*/
	int ret = 0;
	while(a){
		ret = ret*10 + (a % 2); 
		a = a / 2;
	} 
	cout<

 方法二:利用数据的存放特点。位置取元素判断 int 4个字节,char 1个字节, 1个字节8位 

int为4字节,char为1字节,定义char类型的指针*p,在p++四次后,可以将int的32字节的内存空间遍历完毕。

也就是最多遍历四次p,在每次遍历的时候,我们需要判断数据位是0还是1,此时用到的是左移一位,由于左移动低位补0,所以在做移动的过程中始终满足一个字节,我们可以判断高位。

//按位置取元素判断 int 4个字节,char 1个字节, 1个字节8位 
void showbit(int a){
	char *p = (char *)&a;
	char byte;
	int len = 0;
	if(a<=255) len = 1;
	else if (a>255 and a<=65535) len = 2;
	else if (a>65535 and a<16777215) len = 3;
	else len = 4;
	for( int i=0;i

其余的测试main:

#include
using namespace std;

int main(){
	int a = 0b00000001000000100000001100000100;
	cout<

 

 

你可能感兴趣的:(C++)