❶ c语言中进制数的转化问题。
十进制是大家最熟悉的,生活中用的最多的,逢十进一。
而像二进制,八进制,十六进制大致和它相似。
二进制便是逢二进一,八进制是逢八进一,十六进制便是十六进一。
表示方法:
2进制,用两个阿拉伯数字:0、1;
8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;
10进制,用十个阿拉伯数字:0到9;
16进制,用十个阿拉伯数字:0到9,再加A到F;
我个人觉得对初学者来说把别的进制转换为十进制,再用求馀数的方法最简单。。。
十进制整理转换成二进制 将十进制整数转换成二进制整数采用“除2取倒余法”。 即将十进制整数除以2,得到一个商和一个余数;再将商除以2,又得到一个商和一个余数; 以此类推,直到商等于零为止。 每次得到的余数的倒排列,就是对应二进制数的各位数。其实都可以这样算。。。
自己理解,望采纳!不懂再问,我觉得你应该问点具体的。。。
❷ C语言怎么定义一个二进制数
C语言中没有 “二进制数”这种类型,所以没办法直接定义;但可以直接定义16进制数。
例:
int main(){
int a;
scanf("%p",&a);//16进制数输入%p是输入一个十六进制的数scanf("%llx",&a);也可以输入十六进制并且比较正规
printf("%d",a);//十进制输出%d是输出一个十进制的数
printf("0x%x",a);//16进制输出printf("%llX ",a);也可输出一个十六进制数如果红色部分大写X则输出十六进制为大写字母否则小写x输出为小写字母
}
(2)c语言进制数扩展阅读
C语言中定义整型数据的十六进制数:
unsigned int hex_val = 0x123;
//定义了一个整型变量并赋以初始值为一个十六进制常量。
if (scanf("%x", &hex_val) != EOF)
{
printf("它的八、十进制分别=%o、%d ", hex_val, hex_val);
}
❸ c语言怎样定义并输入一个16进制数
1、C/C++规定,16进制数必须以 0x开头。比如 0x1表示一个16进制数,而1则表示一个十进制,0xff,0xFF,0X102A,等等.其中的x不用区分大小写。
C/C++中,10进制数有正负之分。比如12表示正12,而-12表示负12。但8进制和16进制只能表达无符号的正整数,如果在代码中写-0xF2,C/C++并不把它当成一个负数。
2、以下是一些用法示例:
int a = 0x100F; //用一个十六进制数给变量a赋值
int b = 0x70 + a; //用一个十六进制数+变量a的值给变量b赋值
❹ C语言 进制数
这个是c语言的一个规定,八进制数以0开头,另外,八进制数不能大于7
十六进制以ox开头,十六进制的数不能大于15,且10~15的数用A~F或a~f来表示
❺ C语言2进制数的问题
/*
楼上说的用 itoa 转换的方法,虽然可行,但是不是最简便的。
所有数据本身在计算机里面存储本身就是二进制的,根本不用转换。
如数字 int a=7; 设int 是4字节,那么计算机里面的存储形式就是:
00000000 000000000 00000000 00000111
你要查看哪位,直接就能取出来(通过位运算符)
*/
/*
n : 要查看的数字
bitIndex : 位地址,最低位地址为 0 ,取值范围 [0,8*sizeof(int)-1]
*/
#include <stdio.h>
int getBit(int n,int bitIndex)
{
if(bitIndex < 0 || bitIndex >= sizeof(int)*8)
{
printf("超出范围!\n");
return -1;
}
while(bitIndex--)
{
n>>=1;
}
return n&1;
}
int main()
{
int n = 7;
int bitIndex = 0;
int bit;
while((bit = getBit(n,bitIndex)) != -1)
{
printf("%d[%d]=%d\n",n,bitIndex,bit);
bitIndex++;
}
return 1;
}
/*
输出:
7[0]=1
7[1]=1
7[2]=1
7[3]=0
7[4]=0
7[5]=0
7[6]=0
7[7]=0
7[8]=0
7[9]=0
7[10]=0
7[11]=0
7[12]=0
7[13]=0
7[14]=0
7[15]=0
7[16]=0
7[17]=0
7[18]=0
7[19]=0
7[20]=0
7[21]=0
7[22]=0
7[23]=0
7[24]=0
7[25]=0
7[26]=0
7[27]=0
7[28]=0
7[29]=0
7[30]=0
7[31]=0
超出范围!
*/
❻ C语言中的进制怎么转换啊
关于进制转换,我觉得挺好玩的不就是几个公式吧了,
就如我第一次所学的二进制转换为十进制,十进制转换为二进制,那样的类型其实也挺有趣的
比如:一个二进制数转化为十进制数,如哦我所给的一个二进制数“101101001”我就设十进制数是Z
首先有个公式可套:Z=1*X8+0*X7+1*X6+1*X5+0*X4+1*X3+0*X2+0*X1+1*X0
把只是X换为2,算出来的就是你所得到的此二进制数所对应的十进制数
同理:如八进制数转换为十进制数就是把X换为8,十六进制数转换十进制数把X换为16,
至于二进制数转化为八进制数更有意思;
首先我引进一个例子:这是一个比较特殊的二进制数:111111111111
首先把这组数按三个数划分一组(从右开始划分):如,111,111,111,111 于是结果是7777
然后就分别把化为各组的数组转化为是进制数,最后进把你刚才算出的数按原来的顺序排起来,于是得到的结果就是你想要的
那十六进制就是把数组中的每四个划分一组(从右开始划分的)
如111111111111划分结果为1111,1111,1111, 方法与上面一样,于是它的结果是fff
关于十进制转化二进制,八进制和十六进制,方法都是一样的
同二进制方法雷同。
❼ 如何判断c语言中数的进制
在C语言中,或者说在计算机中,所有的数都是以二进制方式存储的。其它进制,包括8进制,10进制,16进制均是供人阅读的。
在C语言中,整型常数有8进制,10进制,16进制三种表示方式。
1 以0开头的常数,如0112, 0531,等,为8进制表示。
2 以0x或0X开头的,为16进制,如0x12, 0xABC.
3 不带任何前缀的,为10进制表示,如123,,812。
❽ 在C语言中整型常数可用十进制、八进制和______进制三种数制表示。
在C语言中整型常数可用十进制、八进制和十六进制三种数制表示。
1、八进制整常数必须以0开头,即以0作为八进制数的前缀。数码取值为0~7。八进制数通常是无符号数。
(1)以下各数是合法的八进制数:
015、0101、0135777。
(2)以下各数不是合法的八进制数:
252(无前缀0)、0386(包含了非八进制数码)、-0127。
2、十六进制整常数的前缀为0X或0x。其数码取值为0~9,A~F或a~f。
(1)以下各数是合法的十六进制整常数:
0X2A(十进制为42)、0XA0 (十进制为160)、0XFFFF (十进制为65535)。
(2)以下各数不是合法的十六进制整常数:
5A (无前缀0X)、0X3H (含有非十六进制数码)。
3、十进制整常数没有前缀。其数码为0~9。
(1)以下各数是合法的十进制整常数:
235、-528、65535、1627。
(2)以下各数不是合法的十进制整常数:
023 (不能有前导0)、23D (含有非十进制数码)。
(8)c语言进制数扩展阅读:
C语言的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。
C语言包含有各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且多以小写字母为主,对许多不必要的部分进行了精简。
实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故C语言拥有非常简洁的编译系统。
C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。
❾ C语言中十进制数和十六进制数能直接运算吗
C语言程序中,十进制和十六进制实际是互通的。
十六进制数由数字0~9、字母A~F(或a~f)组成。把十六进制数按权展开、相加即得十进制数。
现实中十六进制数和十进制数不可以直接相加,如是在电脑上的话是可以的,何种进制数在电脑上都是以二进制的形式表示的,在电脑编写程序时是可以相加的。
十进制数除base取余法,即十进制数除以base,余数为权位上的数,得到的商值继续除以base,依此步骤继续向下运算直到商为0为止。
(9)c语言进制数扩展阅读
十六进制转十进制的源代码如下:
#include<stdio.h>
#include<string.h>
int main(void)
{
char s[20]
hex[20];
int i,j,num;
gets(s);
/*取出字符串中的十六进制字符*/
for(i=0,j=0;s[i]!='