我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二进制补码表示的整数,但保持了二进制数的表达特点。请输出十进制整数1234对应的八进制和十六进制。
我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二进制补码表示的整数,但保持了二进制数的表达特点。请输出十进制整数1234对应的八进制和十六进制。
无
十进制整数1234对应的八进制和十六进制(字母大写),用空格分开,并且要求,在八进制前显示前导0,在十六进制数前显示前导0X。
printf可以使用使用格式控制串“%o”、“%X”分别输出八进制整数和十六进制整数,并使用修饰符“#”控制前导显示
//补充知识点
//%d 十进制
//%o 八进制
//%x 十六进制
//如所需进制需加前导
//则将%变为%o
#include <stdio.h>
int main (void)
{
int i = 1234;
printf("%#o %#X",i, i);
return 0;
} #include<math.h>
#include<stdio.h>
int i = 0;
void dec(int n, int a[])
{
int j = 0;
if (n > 0)
{
dec(n / 2, a);
}
a[i] = n % 2;
i++;
//printf("%d", n % 2);
}
void eight(int b[][3])
{
int i = 0;
int j = 0;
int sum[4] = { 0 };
for (i = 0; i < 4; i++)
{
for (j = 0; j < 3; j++)
{
sum[i] += b[i][j] * pow(2, 2 - j);
}
}
printf("0");
for (i = 0; i < 4; i++)
{
printf("%d", sum[i]);
}
}
void sixteen(int c[][4])
{
int i = 0;
int j = 0;
int sum[3] = { 0 };
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
sum[i] += c[i][j] * pow(2, 3 - j);
}
}
printf(" 0X");
for (i = 0; i < 3; i++)
{
printf("%X", sum[i]);
}
}
int main()
{
int a[100] = { 0 };//a[]数组中存放余数
int j = 0;
int n = 0;
dec(1234, a);
int b[4][3] = { a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11] };
int c[3][4] = { a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11] };
/*for (j = 0; j < i; j++)
{
printf("%d", a[j]);
}*/
eight(b);
sixteen(c);
return 0;
}
我可真是个大聪明。。。