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

【送给在路上的程序员】

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

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

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

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

内存补码分析

#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语言的基础知识=====|

|====== 每天进步一点点,健康快乐每一天 ========|

版权声明:欢迎转载,希望在您转载的同时,添加原文地址,谢谢配合!

时间: 2024-12-13 11:16:27

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

计算机中的原码,反码,补码,以及他们在内存中的存储形式。

1.原码 原码就是早期用来表示数字的一种方式: 一个正数,转换为二进制位就是这个正数的原码.负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码 举例说明: int类型的 3 的原码是 11B(B表示二进制位), 在32位机器上占四个字节,那么高位补零就得: 00000000 00000000 00000000 00000011 int类型的 -3 的绝对值的二进制位就是上面的 11B 展开后高位补零就得: 10000000 00000000 00000000 00000011 但是原码有

C语言之原码、反码和补码

原码.反码和补码 1).数据在内存中存储的时候都是以二进制的形式存储的. int num = 10; 原码.反码.补码都是二进制.只不过是二进制的不同的表现形式. 数据是以补码的二进制存储的. 2). 1个int类型的变量.在内存中占据4个字节, 32位. 00000000 00000000 00000000 00000000 在不考虑正负的情况下.1个int类型的变量可以表示接近43e种数据. 为了可以表示正负性.使用最高为来表示这个数的正负性. 如果最高为是0 那么表示这个数是1个正数 如果

原码、反码、补码相关内容以及Java语言中是以哪一种码表示的

计算机中的数字是以二进制方式存储的,第一个二进制位为符号位,0代表正数,1代表负数 原码.反码.补码是计算机中存储数字使用的编码 1.原码.反码.补码的概念 原码:符号位加上这个数绝对值 例如正整数1的8位二进制原码为 00000001      负整数-1的8为二进制原码为 10000001 反码:正数的反码就是其本身,负数的反码就是在原码的基础上除符号位外所有的位取反 例如正整数1的8位二进制原码为 00000001 则其反码还为 00000001  负整数-1的8为二进制原码为 10000

c语言学习笔记分享——原码、反码与补码

一.什么是原码.反码和补码我们知道,在计算机内部存储的带符号数都是以补码形式存储,用补码形式进行运算的.什么是一个数的补码?为什么要用补码?这要从数的原码.反码开始讲.我们以整型数为例,且假定字长为8位.1.原码整数X的原码是指:其符号位为0表示正,为1表示负;其数值部分就是X的绝对值的二进制数.X的原码通常用[X]原表示.如:[+100]原=01100100 [+0]原=00000000[-100]原=11100100 [-0]原=10000000注意:在原码中,零有两种表示形式.原码表示法简

原码、反码、补码,计算机中负数的表示

原码:将一个整数,转换成二进制,就是其原码.                如单字节的5的原码为:0000 0101:-5的原码为1000 0101. 反码:正数的反码就是其原码:负数的反码是将原码中,除符号位以外,每一位取反.                如单字节的5的反码为:0000 0101:-5的反码为1111 1010. 补码:正数的补码就是其原码:负数的反码+1就是补码.                如单字节的5的补码为:0000 0101:-5的原码为1111 1011. 在计

原码、反码、补码的求法

在计算机内,定点数有3种表示法:原码.反码和补码.  原码:就是前面所介绍的二进制定点表示法,即最高位为符号位,"0"表示正,"1"表示负,其余位表示数值的大小.  反码:正数的反码与其原码相同:负数的反码是对其原码逐位取反,但符号位除外.  补码:正数的补码与其原码相同:负数的补码是在其反码的末位加1.  1.原码.反码和补码的表示方法  (1) 原码:在数值前直接加一符号位的表示法.  例如: 符号位 数值位  [+7]原= 0 0000111 B  [-7]原

原码,反码,补码,移位

复习下二进制的有关知识 1.所有的数据都是以二进制的形式存储在硬盘上.对于一个字节的8位到底是什么类型 计算机是如何分辨的呢? 其实计算机并不负责判断数据类型,数据类型是程序告诉计算机该如何解释内存块. 2.对于字符的存储,先将字符转化成其字符集的码点,(码点就是一个数字),然后把该数字转成2进制存储.所以我们只要记得数字的存储就ok了.字符的码点程序采用无符号处理,即没有符号位,数值型默认都是有符号位的. 1个字节的最高位是符号位所以一个数字能够存储的范围是-128-127 3.原码 正数5:

C语言的原码,反码,补码

1)原码表示 原码表示法是机器数的一种简单的表示法.其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示.设有一数为x,则原码表示可记作[x]原. 例如,X1= +1010110 X2= 一1001010 其原码记作: [X1]原=[+1010110]原=01010110 [X2]原=[-1001010]原=11001010 在原码表示法中,对0有两种表示形式: [+0]原=00000000 [-0] 原=10000000 2)补码表示 机器数的补码可由原码得到.如果机器数是正数,则该机

原码、反码和补码和数据类型的常量

1. 计算机中,只有0和1.处理数据之前,必须先把其放入到内存中进行保存.依据数据类型,确定数据保存的格式. 整数按补码形式, 实数按浮点数形式, 字符按ASCII码形式. 2. 每种类型的数据都有常量和变量之分.按类又分为: 基本类型:整型 实型 字符类型 枚举类型 构造类型:数组类型 结构类型 联合类型 指针类型 空类型(也称无值类型): void 3. 二进制与其他进制的转换 规则:从小数点开始,整数部分向左.小数部分向右. 八进制三位,16进制4位. 二进制的运算:+-*/% 4. 用计