C语言中八进制和16进制怎么表示,原码,反码

C语言中八进制和16进制怎么表示,原码,反码,第1张

如果你是指显示形式,C语言提供如下几种格式:
》 %d 十进制,int型
》%u 十进制,unsigned int
》%o 八进制
》%x 16进制,小写
》%X 16进制,大写
如果初始化赋值的时候 那数字前边加0表示八进制,加0x表示16进制,什么都不加那就是十进制喽
016 八进制
0x16 十六进制
16 十进制

八进制:012
040
093
-01151
-0157
04663
-067756
051013
(在C/C++中,八进制开头要加0,来说明这个整数是八进制数)
十六进制:0xa
0x20
0x4b
-0x269
0x6f
0x9b3
-0x6fee
0x520b(在C/C++中,十六进制开头要加0x,来说明这个整数是十六进制数)

16在16进制中表示为10H,H是16进制的标记。十六进制是计算机中数据的一种表示方法,它的规则是“逢十六进一”。十六进制数的基数是16,采用的数码是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中A-F分别表示十进制数字10-15。
十六进制数的技术规则是“逢十六进一”,它的各位的权是以16的N次方标识的。通常,对十六进制数的表示,可以在数字的右下角标注16或H,但在C语言中是在数的前面加数字0和字母X即0X来表示。例如,12AF在C语言中表示为0X12AF。十六进制数的加减法的进/借位规则为:借一当十六,逢十六进一。十六进制数同二进制数及十进制数一样,也可以写成展开式的形式。

/按要求,输入输出都在子函数中进行/
#include <stdioh>
void fun(void)
{
int a=0,i;
char str[6];
printf("输入十六进制数:\n");
gets(str);
for(i=0;str[i]!='\0';i++)
if(str[i]>='0'&&str[i]<='9')
a=a16+str[i]-48;
else
if(str[i]>='a'&&str[i]<='z')
a=a16+str[i]-'a'+10;
else
a=a16+str[i]-'A'+10;
printf("对应的十进制数为:%d\n",a);
}

int main(void)
{
fun();
getchar();
}

整型数据的十六进制数表示,
unsigned
int
hex_val
=
0x123;
//定义了一个整型变量并赋以初始值为一个十六进制常量。
if
(scanf("%x",
&hex_val)
!=
EOF)
{
printf("它的八、十进制分别=%o、%d\n",
hex_val,
hex_val);
}
也可以输入一个由0-9-A-F中组成的连续的字符序列,然后检查它是否为合法的十六进制数格式,最后,如果需要,可用函数strtoul将这个字符串指针作为base参数转换成数值。


程序功能:求二进制,十进制,八进制
创建人:蒲宇林
创建日期:2007年8月13日
/
#include
void
two();
void
eight();
void
sixteen();
/主函数/
void
main()
{
int
select;
do
{
printf("0
-
退出,1
-
十进制转二进制,2
-
十进制转八进制,3
-
十进制转十六进制");
scanf("%d",&select);
switch(select)
{
case
1
:
two();
break;
//十进制转二进制
case
2
:
eight();
break;
//十进制转八进制
case
3
:
sixteen();
break;
//十进制转十六进制
default
:
printf("您的输入有误,请重新输入!");
break;
}
if(select
==
0)
{
break;
}
}while(1);
}
void
two()
{
int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//转换为二进制并存入数组
{
arr[i]
=
num
%
2;
num
=
num
/
2;
if(num
==
0)
{
break;
}
}
printf("转换为二进制:");
//打印
for(;
i
>=
0
;
i--
)
{
printf("%d",arr[i]);
}
printf("\n");
}
void
eight()
{
int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//转换为八进制并存入数组
{
arr[i]
=
num
%
8;
num
=
num
/
8;
if(num
==
0)
{
break;
}
}
printf("转换为八进制:");
//打印
for(;
i
>=
0
;
i--
)
{
printf("%d",arr[i]);
}
printf("\n");
}
void
sixteen()
{
int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//转换为二进制并存入数组
{
arr[i]
=
num
%
16;
num
=
num
/
16;
if(num
==
0)
{
break;
}
}
printf("转换为十六进制:");
//打印
for(;
i
>=
0
;
i--
)
{
switch(arr[i])
{
case
10
:
printf("a");
break;
case
11
:
printf("b");
break;
case
12
:
printf("c");
break;
case
13
:
printf("d");
break;
case
14
:
printf("e");
break;
case
15
:
printf("f");
break;
default
:
printf("%d",arr[i]);
}
}
printf("\n");
}

#include&lt;stdioh&gt;

#include&lt;mathh&gt;

#include&lt;stringh&gt;

int main()

{

char a[10];

void convert(char a[]);

printf("请输入十六进制数:");

gets(a);//输入十六进制数

convert(a);

return 0;

}

void convert(char a[])

{

int n,i,num=0;

n=strlen(a);

for(i=n-1;i&gt;=0;i--)

{

if(a<i>&gt;='0'&&a<i>&lt;='9')

num+=(a<i>-'0')pow(16,n-1-i);

else if(a<i>&gt;='A'&&a<i>&lt;='Z')

num+=(10+(a<i>-'A'))pow(16,n-1-i);

else if(a<i>&gt;='a'&&a<i>&lt;='z')

num+=(10+(a<i>-'a'))pow(16,n-1-i);

}

printf("转换十进制为:");

printf("%d",num);

}

扩展资料:

gets()的用法:

gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束;但回车符不属于这个字符串。其调用格式为:gets(s);其中s为字符串变量(字符串数组名或字符串指针)。

gets(s)函数与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s)函数输入字符串时存在一个问题,就是如果输入了空格会认为输入字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到回车为止。

示例:

#include&lt;stdioh&gt;

int main()

{

char s[20];

printf("What's your name\n");

gets(s);

printf("%s\n",s);

return 0;

}

当输入a bde回车的时候,会输出a bde。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13392421.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-27
下一篇 2023-07-27

发表评论

登录后才能评论

评论列表(0条)

保存