0.4

.0 十进制转换十六进制(怎么还是没能记住【可恶呢】)

以 112358 为例,

短除法:

在内存地址中,用 0x0001B6E6 表示,0x 是十六进制的标识。

.1 小端与大端

据小甲鱼的科普,小端和大端是数据的存放形式。

大端是高位字节排放在内存低位地址;

例如整型变量0x12345678占四个字节,其存放方式为:

数据0x120x340x560x78
地址0x100000000x100000010x100000020x10000003

小端则相反,地位字节排放在高位地址:

数据0x780x560x340x12
地址0x100000000x100000010x100000020x10000003

两者各有利弊,并无绝对。

在转换类型时, int a = 0x1234  , 其存放方式为 0x12340000

那么, (long)a,则只需要在末尾补齐相应的 0 即可。

如果是大端的话, 其存放方式是 0x00001234, 则需要先后移再补齐。

但是符号位的判定固定为第一个字节,容易判断正负[doge]

1.练习:

哼哼哼,虽然写了很久,但整体思路跟小甲鱼的没什么出入!

	int M1, P1, M2, P2;
	
	printf("请输入第一个矩阵的尺寸(M * P):");
	scanf("%d*%d", &P1, &M1);
	printf("请输入第二个矩阵的尺寸(M * P):") ;
	scanf("%d*%d", &P2, &M2);
	
	int i, j;
	int matrix1[P1][M1], matrix2[P2][M2];
	int a;
	
	printf("请输入第一个矩阵的值\n");
	for (i = 0; i < P1; i++)
	{
		for (j = 0; j < M1; j++)
		{
			scanf("%d",&a);
			matrix1[i][j] = a;
		}
	} 

	printf("请输入第二个矩阵的值\n");
	for (i = 0; i < P2; i++)
	{
		for (j = 0; j < M2; j++)
		{
			scanf("%d",&a);
			matrix2[i][j] = a;
		}
	} 	
	
	int i1, i2, j1, j2;
	int matrix3[P1][M2], sum;
	
	for (i1 = 0; i1 < P1; i1++)
	{
		for (j2 = 0; j2 < M2; j2++)
		{
			sum = 0;
			for (i2 = 0, j1 = 0; i2 < M1, j1 < P2; i2++, j1++)	
			{
				sum += matrix1[i1][i2] * matrix2[j1][j2];
			}
			matrix3[i1][j2] = sum;
		}
	}
	
	int max = 0, half ;
	max = P1 > P2 ? P1 : P2; 
	half = max/2;
	for ( i = 0; i < max; i++)
	{
		if ( i < P1)
		{
			printf("| ");
			for (j = 0; j < M1; j++)
			{
				printf("%d ", matrix1[i][j] );
			}
			printf("| ");
		}
		else
		{
			for (j = 0; j < M1 + 2; j++)
			{
				printf("  ");
			}
		}
        printf( i == half? "* ": "  ");			
		if ( i > P2)
		{
			for (j = 0; j < M1 + 2; j++)
			{
				printf("  ");
			}
		}
		else
		{
			printf("| ");
			for ( j = 0; j < M2; j++)
			{
				printf("%d ", matrix2[i][j]);
			}
			printf("| ");
		}
		printf( i == half? "= ": "  ");
		if ( i < P1)
		{
			printf("| ");
			for ( j = 0; j < M2; j++)
			{
				printf("%d ", matrix3[i][j]);
			}
			printf("| "); 
		}
		else
		{
			for (j = 0; j < M2 + 2; j++)
			{
				printf("  ");
			}
		}

		printf("\n");
	} 

不过就是写了很久........TT

更多推荐