codevs 进制转换类型x

进制转换

1.计算机中采用二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供有利途径、节省设备等优点,为了便于描述,又长用八、十六进制作为二进制的缩写,一般技术都采用进位计数,其特点:

(1)逢N进一,N是每种进位计数制表示一位数所需要符号数目为基数。

二进制:逢二进一,借一当二

八进制:逢八进一,借一当八

十六进制:。。。。。。。。

(2)数制转换 不同进位计数制之间的转换原则:不同进位计数制之间的转换是根据两个有理数如相等,则两数的整数和分数部分一定分别相等的原则进行的,若转换前两数相等,转换后仍必须相等。

十进制:有十个基数:0,1,2,3,4,5,6,7,8,9

二进制:有两个基数:0,1

八进制:有八个基数;0,1,2,3,4,5,6,7

十六进制:有十六个基数:0—9,A,B,C,D,E,F(A=10,B=11,C=12,D=13,E=14,F=15)

一、十进制与其他进制之间的转换

1)十进制—二进制

十进制除以2,除至0时所得余数按反方向写出,即为二进制数

例:36除以2得出的商依次是  18  9  4  2   1

所得余数依次为           0  0  1  0   0  1

将余数从右往左写        1  0  0  1   0   0

所得出100100为二进制数

小技巧:为方便可将公式变为以下形式:


二进制

右数位数

1 2 3 4 5 6 7 8
十进制数 1 2 4 8 16 32 64 128
公式原型 20  21  22  23  24  25  26  27

2)二进制—十进制

计算公式:a*20+b*21+c*22+....+m*2(n-1)=

以上公式,a表示二进制数的右边第一位的数,b表示二进制数的右边第二位的数,c表示二进制数的右边第三位的数.....m表示二进制数的右边第(n-1)位的数

例:1011001由右至左成为十进制为89

1*20+0*21+0*22+1*23+1*24+0*25+1*26

=1+8+16+64

=89

二、1)十进制—八进制

从右第n位 8 7 6 5 4 3 2 1
8(n-1) 87 86 85 84 83 82 81 80
十进制下的实际数 2097152 262144 32768 4096 512 94 8 1

(2)同二进制转十进制

计算公式      a*80+b*81+c*82+d*83+.....+m*8(n-1)=

以上公式中,a表示八进制数的右边第一位的数,b表示八进制数的右边第二位的数,c表示八进制数的右边第三位的数.....m表示八进制数的右边第(n-1)位的数。

例:2137由右至左成为十进制为1119

7*80+3*81+1*82+2*83

=7+24+64+1024

=1119

三、1)十进制—十六进制

十进制数除以十六

0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)

十进制数逐次整除16,至商为0,所得余数按相反顺序写出,即为其十六进制数。

例:75除以16得出的余数为11(B)      4

余数从右向左写为   4B

2)十六进制—十进制

同二进制、八进制一样

计算公式:  a*160+b*161+c*162+d*163+.....+m*16(n-1)=

以上公式中,a表示十六进制数的右边第一位的数,b表示十六进制数的右边第二位的数,c表示十六进制数的右边第三位的数.....m表示十六进制数的右边第(n-1)位的数。

163 162 161 160
4096 256 16 1

例:1BC2由右至左成为十进制为7106

2*160+12*161+11*162+1*161

=2+192=2816+4096

=7106

四、其他进制之间的转换

二进制转换为八进制:对于整数,采用从右到左每三组一组,不够三位数的在其左边补齐0,每组单独转换出来,即为八进制数。

例:(001             101            111        011)

1                 5                7            3

所以,(1573)即为所得八进制数。

八进制转换为二进制:将每位八进制由三位二进制数代替,即可完成转换。

例:(1         7           3         5)

001       111        011    101

所以,(1111011101)即为所得二进制数。

二进制转换为十六进制:由于2的4次方+16,所以依照二进制与八进制的转换方法,将二进制数的每四位用一个十六进制数码来表示,整数部分以小数点为界点从右往左每四位一组转换,小数部分从小数点开始自左向右每四位一组进行转换。

例  :     (1001         0111        0111       1001)

9              7              7             9

所以,(9779)为所得的十六进制数

十六进制转换为二进制:只要将每一位十六进制数用四位相应的二进制数表示,即可完成转换。

例   :   (8         7         6         5)

1000    0111   0110     0101

所以,(1000 0111 0110 0101)便为所得的二进制数。

1474 十进制转m进制

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 白银 Silver

题目描述 Description

将十进制数n转换成m进制数 m<=16

n<=100

输入描述 Input Description

共一行

n和m

输出描述 Output Description

共一个数

表示n的m进制

样例输入 Sample Input

样例1:10 2

样例2:100 15

样例输出 Sample Output

样例1:1010

样例2:6A

数据范围及提示 Data Size & Hint

用反向取余法

分类标签 Tags 点此展开

 1 #include <cstdio>
 2 #include <iostream>
 3
 4 using namespace std;
 5
 6 int x[100];
 7
 8 int jzzh(int y,int ml)
 9 {
10     int i,a;
11     i=ml;       //i表示几进制
12     x[0]=0;     //进行计数
13     for(a=1;;a++)
14     {
15         if(i!=0)
16         {
17             x[a]=i%y;
18             x[0]++;
19         }
20         else
21             break;
22         i=i/y;
23     }
24     return x[0];
25 }
26 int main()
27 {
28     int y,ml,a;
29
30     /* start 输入十进制数字的处理 */
31     scanf("%d",&ml);
32     /* end 输入十进制数字的处理 */
33
34     /* start 输入转换的进制处理 */
35     do
36     {
37         scanf("%d",&y);//转换成几进制的数
38     }while(y<=0 || y>16);
39     /* end 输入转换的进制处理 */
40
41     /* start 实际的进制转换 */
42     jzzh(y,ml);//函数
43     /* end 实际的进制转换 */
44
45     /* start 转换之后的数字输出 */
46     for(a=x[0];a>=1;a--)//逆序输出
47     {
48         if(x[a]>=10)//ABCDEF的处理
49         {
50             printf("%c",x[a]+55);
51         }
52         else
53         {
54             printf("%d",x[a]);
55         }
56     }
57     //printf("\n");//换行
58     /* end 转换之后的数字输出 */
59
60     return 0;
61 }

10进制转m进制

1475 m进制转十进制

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 白银 Silver

题目描述 Description

将m进制数n转化成一个十进制数 m<=16

题目保证转换后的十进制数<=100

输入描述 Input Description

共一行

n和m

输出描述 Output Description

共一个数

表示m进制的n化成十进制的数

样例输入 Sample Input

1010 2

样例输出 Sample Output

10

数据范围及提示 Data Size & Hint

乘权累加法

分类标签 Tags 点此展开

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<algorithm>
 6
 7 using namespace std;
 8
 9 char s[111];
10 int jz;
11
12 void zh(char* star,int jinzhi)
13 {
14     int len=strlen(star);//有多少位数(从零开始计数)
15     int num=1,sum=0;
16     for(int i=len-1;i>=0;i--)
17     {
18         if(s[i]-‘0‘<10)//如果该位数是数字
19              sum+=(s[i]-‘0‘)*num;// 直接加上
20         else
21         {
22             switch(s[i])//其他的进行多进制的处理
23             {
24                 case ‘A‘:
25                     s[i]=10;
26                     break;
27                 case ‘B‘:
28                     s[i]=11;
29                     break;
30                 case ‘C‘:
31                     s[i]=12;
32                     break;
33                 case ‘D‘:
34                     s[i]=13;
35                     break;
36                 case ‘E‘:
37                     s[i]=14;
38                     break;
39                 case ‘F‘:
40                     s[i]=15;
41                     break;
42             }
43             sum+=s[i]*num;
44         }
45         num*=jinzhi;
46     }
47     printf("%d\n",sum);
48 }
49
50 int main()
51 {
52     cin>>s>>jz;
53     zh(s,jz);
54     return 0;
55 }

m进制转10进制

时间: 2024-10-06 00:41:14

codevs 进制转换类型x的相关文章

03 php 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换,算术运算,比较运算

03 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换, 算术运算,比较运算,逻辑运算,短路现象, 三目运算符,字符型运算: 数据类型 整体划分 标量类型: int, float, string, bool 复合类型: array,     object 特殊类型: null,     resouce 整数类型int, integer 3种整数表示法 十进制写法:123: $n1 = 123; 八进制写法: 0123 $n2 = 0123; 十六进制写法: 0x123 $n3

【String与基本类型之间的转换】以及【进制转换】

1. 基本数据类型---->字符串类型: 方法一:使用连接一个空字符串,例如  基本数据类型+“” : 方法二:静态方法 String.valueOf(),具体有: String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串 String.valueOf(char c) : 将 char 变量 c 转换成字符串 String.valueOf(char[] data) : 将 char 数组 data 转换成字符串 String.valueOf(char[]

(数字类型,进制转换,字符串,列表)介绍和操作

数字类型 整型 用途:记录年龄.等级.号码等 定义方式如 age = 18 本质 # age = int(18) 整型只能存一个值而且是不可变类型 int()方法能将字符串转为整型 需要注意的是使用int只能转纯数字的字符串,有小数点也不行 浮点型 用途:记录身高.体重.薪资等 定义方式如 height= 185.1 本质 # height= float(185.1) 浮点型只能存一个值而且是不可变类型 float()方法能将字符串和整型转为浮点型 需要注意的是使用float方法只能转纯数字的字

获取码值(各种类型字符(中、英)的ASCII)和进制转换系统(包括正负数、小数)

获取码值和进制转换 程序由来: 本人发现计算机中的计算器木有将十进制小数转二进制的功能,后来发现一些网站将十进制负数转二进制只是求出整数的二进制,然后前面加"-",这种表示不是真正的负数二进制.于是爱较真儿的我写了一个可以转十进制小数.负数.负数加小数为二进制的系统,供大家学习参考.介于理解代码,代码中运用到了纯拼音.虽然是拼音,但符合代码编写格式.介于个人知识有限,代码如有需要修改和改进的地方,敬请大家评教指正,共同学习. 实现功能: 获取字符的码值,包括中文. 进制转换包括:十进制

c#中的进制转换

今天偶然接触到了一个位或的表达式,就像着自己做一个进制之间的转换器,基本功不扎实,二进制之间的运算稀里糊涂的. 常见的进制方式,主要有二进制,八进制,十进制和十六进制,通用的转换方式是把非十进制的数据类型转换成十进制的,然后再转换成其他类型. 进制转换的入口函数: /// <summary> /// 进制转换 /// </summary> /// <param name="input"></param> /// <param nam

SQL Server 进制转换函数

一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下面的映射表“: (Figure1:效果图) 二.十进制转换为十六进制 在网上有很多资料关于使用SQL语句把十进制转换为十六进制的资料,比如: --方式1 SELECT CONVERT(VARBINARY(50), 23785) 执行返回值为0x00005CE9,但是需要注意的是,这本应该返回二进制的

javascript进制转换

一.语法说明 1.parseInt() parseInt:将字符串转换成整数 parseInt(string, radix) string要被解析的字符串. 可选.表示要解析的数字的基数.该值介于 2 ~ 36 之间. 如果省略该参数或其值为 0,则数字将以 10 为基础来解析.如果它以 “0x” 或 “0X” 开头,将以 16 为基数. 如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN. 2.toString() toString()方法属于Object对象,Jav

包装类 装箱拆箱 进制转换

简介 基本数据类型对象包装类 byte        Byteshort      Shortint           Integer    Integer.MAX_VALUElong        Longfloat        Floatdouble    Doublechar       Characterboolean  Boolean 自动装箱.自动拆箱 Integer i = 4; //自动装箱,会自动转换为以下形式:Integer i = new Integer(4); i +

php进制转换函数

php进制转换函数如下: bindec() — 二进制转换为十进制decbin() — 十进制转换为二进制dechex() — 十进制转换为十六进制decoct() — 十进制转换为八进制hexdec() — 十六进制转换为十进制octdec() — 八进制转换为十进制base_convert()– 在任意进制之间转换数字 一,十进制(decimal system)转换函数说明 1,十进制转二进制 decbin() 函数,如下实例 echo decbin(12); //输出 1100 echo