C语言中的整数可用哪几种进制表示?如何表示?

C语言中的整数可用哪几种进制表示?如何表示?,第1张

C语言只有十进制和十六进制,平常用的一般都是十进制,十六进制是以0x开头的,其他进制可以通过itoa函数很容易转换得到,头文件是stdlibh,itoa有三个参数,第一个参数是十进制的数,第二个参数是用来存储转换后的内容,第三个参数就是想转换的进制类型,比如二进制就写2

我大致明白你的问题了

首先讲个概念吧,有符号int型数据的取值范围是-32768~32767,这个数是循环的

举个例子 int a=32767,那么:32767+1 = -32768; 32767+2 = -32767;依次类推,

在你列举的代码中,a=1000000000000000;这不是二进制表示,得到的结果或许是凑巧

如果是a=0x8000;才表示二进制1+15个0,0x8000转换为10进制正好是32767+1。

至于你说0+15个1应该表示为a=0x7fff; 正好是10进制的32767

呵呵,我补码什么的也说不明白,就用这种循环的说法吧,肯定是对的,你可以自己试验

要是有疑问再问吧,一起交流

这个所谓的十进制 八进制二进制 对于你来说,只有显示为字符串才会被你所认识和识别。所以说你所看到的都是字符串而在计算机内部全都是以2进制进行运算的。
当然编程的时候你可以随意用进制表示数字
八进制数以0开头
十六进制数以0x开头
没有直接表示2进制的方法。

十进制123在c语言中用八进制表示为173,用十六进制表示为7B。

十进制整数转换为其他进制整数采用"除进制数取余,逆序排列"法。用进制数去除十进制整数,可以得到一个商和余数;再用进制数去除商,如此进行,直到商为零时为止,然后把先得到的余数作为其他进制数的低位有效位,后得到的余数作为其他进制数的高位有效位,依次排列起来。

即十进制123=18^2+78^1+38^0=八进制173=716^1+1116^0=十六进制7B。

扩展资料:

八进制广泛应用于计算机系统,如PDP-8,ICL 1900和IBM大型机使用12位、24位或36位。八进制是这些基础,因为他们的最理想的二进制字缩写大小能被3整除(每个八进制数字代表三个二进制数字)。四、八到十二个数字可以简明地显示整个机器。

它也降低成本使得数字允许通过数码管,七段显示器,和计算器用于 *** 作员控制台,他们在二进制显示使用过于复杂,然而十进制显示需要复杂的硬件,十六进制显示需要显示更多的数字。

十进制的任意转换
#include
#include
int
main()
{
int
a,b,c,n
=
0,m[40];
printf("请输入你想算得数
=__\b\b");
scanf
("%d",&a);
printf("
请输入你想算的进制
=__\b\b");
scanf
("%d",&b);
while
(a
!=
0)
{
n
++
;
c
=
a
%
b;
m[n]
=
c;
a
=
a
/
b;
}
for
(a
=
n;
a
>=
1;a--)
printf
("%d",m[a]);
return
0;
}

%d
%o
%x
%e 是实数,用科学计数法计的
格式字符 说明
%a 一个浮点值(仅C99有效)
%A 同上
%c 一个字符
%d 十进制整数
%i 十进制,八进制,十六进制整数
%o 八进制整数
%x 十六进制整数
%X 同上
%c 一个字符
%s 一个字符串,遇空格、制表符或换行符结束。
%f 实数,可以用小数形式或指数形式输入。
%F 同上
%e 同上
%E 同上
%g 同上
%G 同上
%p 一个指针
%u 一个无符号十进制整数
%[] 扫描字符集合
%% %符号


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

原文地址: http://www.outofmemory.cn/yw/13192321.html

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

发表评论

登录后才能评论

评论列表(0条)

保存