您的位置:首页 > 编程语言 > C语言/C++

【C/C++学院】0725-内存补码分析/补码原码实战/打印整数二进制数据/静态库说明

2015-08-01 20:57 633 查看



【送给在路上的程序员】

对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现。

对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步。

对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现。

每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我。

内存补码分析

#include<stdio.h>
#include<stdlib.h>

void main3()
{
	//printf不会进行数据类型转换
	printf("%d", (int)10.3);//printf不管你是什么类型,按照%d ,%f解析数据
	printf("\n%f", (float)10);
	getchar();
}

void  main4()
{
	int num = 100;
	printf("%p", &num);//不同的解释方式就有不同的解释结果
	getchar();
}

void   main5()
{
	char ch = 1,ch1='1';//字符与编号的区别
	printf("%d,%d", ch,ch1);
	getchar();
}

void   main6()
{
	//解析的时候,与数据的长度有关系
	unsigned short num = 65535+1;
	printf("刘宁波有%d元", num);
	//  99
	// 100
	getchar();
}

void   main7()
{
	//补码,计算机存储数据的方式
	short num = -1;
	printf("%d", num);
	printf("\n%u", num);//%u 0-正整数
	getchar();
}

补码原码实战

#include<stdio.h>
#include<stdlib.h>
#include<limits.h>

void main10()
{
	int x = 1;
	int y = -1;//补码
	printf("x=%p,y=%p", &x, &y);
	system("pause");
}

void  main123()
{
	//int  unsigned int  4个字节32位
	//有符号,0代表正数,1代表负数

	//0111 1111 1111 1111 1111 1111 1111 1111
	//1111 1111 1111 1111 1111 1111 1111 1111//无符号,正数,全部都是数据

	printf("%d,%d", INT_MAX, INT_MIN);//%d只能显示INT_MIN->INT_MAX
	printf("\n%d,%d", INT_MAX+1, INT_MIN-1);
	printf("\n%u,%u", UINT_MAX, 0);
	printf("\n%u,%u", UINT_MAX+1, 0-1);//%u   0->UINT_MAX
	system("pause");
}

void main1234()
{
	int x = 4294967295;
	int y = -1;
	//1111 1111 1111 1111 1111 1111 1111 1111内存的存储方式
	//无符号,没有符号位,全部都是数据 4294967295

	//0000 0000 0000 0000  0000 0000 0000 0001 1原码
	//1000 0000 0000 0000  0000 0000 0000 0001 -1的原码
	//1111 1111 1111 1111  1111 1111 1111 1110 -1的反码
	//1111 1111 1111 1111  1111 1111 1111 1111 -1的补码	
	printf("%d,%u", x,x);
	printf("\n%d,%u", y, y);
	getchar();
}

void  main()
{
	unsigned int num = -1;//
	//1111 1111 1111 1111 1111 1111 1111 1111内存的存储方式
	printf("%d,%u", num, num);
	system("pause");
}


打印整数二进制数据

#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

void main1()
{
	int num;
	scanf("%d", &num);

	printf("num=%d,&num=%p\n", num,&num);
	int  data = 1 << 31;//构建一个相与的数据

	for (int i = 1; i <= 32; i++)
	{
		int temp = num&data;//求出首位相与
		if (temp == 0)
		{
			putchar('0');
		}
		else
		{
			putchar('1');
		}
		
		num <<= 1;
		if (i % 4 == 0)
		{
			printf(" ");
		}
	}

	system("pause");
}

void main()
{
	int num;
	scanf("%d", &num);

	printf("num=%d,&num=%p\n", num, &num);
	int  data = 1 << 31;//构建一个相与的数据
	if (num < 0)
	{
		num = ~num + 1;//求原码   
		num = num | data;//设置符号位   
	}

	for (int i = 1; i <= 32; i++)
	{
		int temp = num&data;//求出首位相与
		if (temp == 0)
		{
			putchar('0');
		}
		else
		{
			putchar('1');
		}
		num <<= 1;
		if (i % 4 == 0)
		{
			printf(" ");
		}
	}

	system("pause");
}


静态库说明



1.属性添加 xxx.lib 链接 或者代码方式实现 #pragma comment(lib, "detours.lib")
2.并且把xxx.lib 放到源码目录下

|=========== 吴英强CSDN博客专栏==============|

|== C/C++学院 专栏文章的内容(不定期更新)===|

|== linux驱动开发 探索linux底层的奥秘
==========|

|== Java基础学习篇 掌握java语言的基础知识=====|

|====== 每天进步一点点,健康快乐每一天 ========|
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: