#P05019. 进制转换
进制转换
题目背景
对于 进制数 ,如果某位上数字超过 ,那么用大写字母来表示这个位上的数: 表示 、 表示 、 表示 ,...,以此类推。例如两位十六进制数 AB
,其高位是 A
(其实就是 ),其低位是 B
(其实就是 )。
进制数转 进制,一般先将 进制数转换成十进制数(按权相加法),再将十进制数转换成 进制数(短除法)。
进制整数转换成十进制数:按权相加法
例如二进制数 ,其实是:
$(11011)_2 = 1 \times 2^4 + 1 \times 2^3+0 \times 2^2+0 \times 2^1+1 \times 2^0 = 25$;
上面的计算其实就是:$(((((0\times 2+1)\times 2+1)\times 2+0)\times 2+0)\times 2)+1$,所以也可以用下面的方式计算:
n = 0
n = n*2 + 1
n = n*2 + 1
n = n*2 + 0
n = n*2 + 0
n = n*2 + 1
//处理后n的值就是二进制数11011对应的十进制数
又例如八进制数 ,其实是:
$(128)_8 = 1 \times 8^2 + 2 \times 8^1 + 7 \times 8^0 = 87$;
上面的计算其实就是:,所以也可以用下面的方式计算:
n = 0
n = n*8 + 1
n = n*8 + 2
n = n*8 + 7
//处理后n的值就是八进制数127对应的十进制数
又例如十六进制数 ,其实就是:
$(A1F)_{16} = 10 \times 16^2 + 1 \times 16^1 + 15 \times 16^0 = 2591$。
上面的计算其实就是:,所以也可以用下面的方式计算:
n = 0
n = n*16 + 10
n = n*16 + 1
n = n*16 + 15
//处理后n的值就是十六进制数A1F对应的十进制数
十进制整数转 进制数:短除法
以十进制数 转二进制为例:
以十进制数 转十六进制为例:
题目描述
现在给定一个 进制的非负整数 ,想知道其转 进制的结果。
输入格式
三个数据 、、,用一个空格隔开相邻的两个数据。
输出格式
进制的非负整数 转 进制的结果。
输入输出样例
10 255 16
FF
16 FF 10
255
16 FF 2
11111111
说明/提示
👀️ 对于的数据,, 进制非负整数 对应的十进制数不大于 。
相关
在下列比赛中: