python基础期末复习专项训练三-2025-2026学年浙教版高二信息技术期末复习必修一

2025-10-01
| 2份
| 9页
| 711人阅读
| 4人下载

内容正文:

Python基础复习(三) ——进制转换问题 一、进制转换 十进制转换为其他进制(k进制):除k取余倒排法 其他进制(k进制,逢k进一)转换为十进制,按照位权展开法 111B=_______________ (23)8=_____________ 31H=___________ 【经典例题】 1.下列数值中,与十六进制数30最接近的是( ) A.29D B.31D C.110010B D.2FH 2.下列各数中,比二进制数00010101小的数是( ) A.00011010B B.11H C.35D D.A0H 3.有一个二进制数为1□101□0,其中有两位数字模糊不清,下列可能与其值相等的是( ) A.84D B.64H C.53H D.52D 4.有二进制和十六进制数相加的表达式:1101B+2CH,下列与其结果相等的是( ) A.111001B B.111000B C.111010B D.111011 5.将二进制数11B、十进制数15D和十六进制数10H按从大到小排序,下列正确的是( ) A.10H,15D,11B B.10H,11B,15D C.15D,10H,11B D.15D,11B,10H 6.一个4位十六进制数n,其末位数字为“0”。下列说法正确的是( ) A.若将n转换为二进制数m1,m1的有效位数可能是12位 B.若将n转换为二进制数m2,m2的有效位数不可能是17位 C.若将n转换为十进制数m3,无法确定m3是否能被16整除 D.若将n的末位数字“0”去掉后,再转换为十进制数,所得的值为n/10 7.已知某进制数的等式满足:23+5=30和30+52=102,则下列说法正确的是( ) A.这两个等式为四进制数加法运算 B.这两个等式为十六进制数加法运算 C.等式23+5=30的计算结果30,转换为十进制数为24 D.等式30+52=102的计算结果102,转换为十进制数为258 8.用8位二进制表示有符号整数时,左边第一位为“0”表示为正,“1”表示为负。下列数值中与十进制数(-87)10相等的是( ) A.1010111B B.01010111B C.11010111B D.11010110B 9.一个二位十六进制正整数n,末位是“9”,下列说法正确的是( ) A.无法确定n是奇数还是偶数 B.n+1是一个三位十六进制数 C.转换为十进制数,最小值是25 D.转换为二进制数,位数一定是8 10.现有一个二进制数X为1□10□,其中“口”表示未知,以下关于这个数的说法正确的是( ) A.X不可能是5的倍数 B.X可能是21 C.X<28肯定成立 D.X〉20肯定成立 11.求一个十进制(-255~-1)负数的8位二进制补码方法是:将其对应的正数7位二进制所有位数取反(1改为0,0改为1)后加1,并设置符号位(最高位)为1。如求-3的8位二进制补码方法:3的7位二进制数为0000011,取反后为1111100,加1后为1111101,设置符号位为1,-3的8位二进制补码为11111101。则十进制数-5的8位二进制补码为( ) A.11111011 B.10000101 C.11111010 D.11111100 二、进制转换代码实现 1、十进制转二进制、十六进制 1.将十进制n转二进制数存储在字符变量s中。例如:n=10,转换成二进制数后s=“1010” s="" n=int(input()) while _____________: r=_____________ # 取余 s=_____________ # 拼接 n=_____________ # 取整 print(s) 2.将十进制n转16进制数存储在字符变量s中。例如:n=42,转换成16进制数后s=“2A” k="0123456789ABCDEF" s="" n=int(input()) while _____________: r=_____________ s=_____________ n=_____________ print(s) 2、 二进制转十进制 3.二进制数存储在字符串变量s中。使用“位权展开”法将二进制转换为十进制。结果存储在整数变量ans中。 法1: s="10011" ans = 0 n=_____________ for i in range(n): x=_____________ ans=_____________ print(ans) 4.二进制数存储在字符串变量s中。使用“累乘相加”法将二进制转换为十进制。结果存储在整数变量ans中。 法2: s="10011" ans=0 n=len(s) for i in range(n): x=int(s[i]) ans=ans*2+x print(ans) 3、 十六进制转十进制 5.十六进制数存储在字符串变量s中。使用“位权展开”法将十六进制转换为十进制。结果存储在整数变量ans中。 法1: s="2A" ans=0 n=len(s) for i in range(n): ch=s[i] if ch>="A" and ch<="Z": x=_____________ else: x=_____________ ans=_____________ print(ans) 5.十六进制数存储在字符串变量s中。使用“累乘相加”法将十六进制转换为十进制。结果存储在整数变量ans中。 法2: s="2A" ans=0 n=len(s) print(ans) 三、习题巩固 1、编写程序,实现如下功能:输入一个整数n,输入一个整数k,运行后,将十进制数n转换为k进制数并输出。比如n=25,k=2,转换为二进制后为“10011”,请补充代码。 n=int(input("请输入一个十进制整数n:"))法2: m = "0123456789ABCDEF" n = int(input("请输入一个十进制整数n:")) k = int(input("请输入要转换的进制k:")) s = "" n1 = n print(k, "进制数的", n, "为", s) k=int(input("请输入要转换的进制k:")) s="" n1=n while n1>0: print(k,"进制数的",n,"为",s) 2、编写程序,实现如下功能:输入一个整数s,输入一个整数k,运行后,将k进制数s转换为十进制数并输出。比如s=”10011”,k=2,转换为十进制后为“25”,请补充代码。 法1:法2: k = int(input("请输入一个进制:")) s = input("请输入一个该进制数:") n = len(s) s1 = "" ans = 0 print(ans) k = int(input("请输入一个进制:")) s = input("请输入一个该进制数:") n = len(s) s1 = "" ans = 0 print(ans) 3、奇偶校验是一种校验数据传输正确性的方法。其中奇校验方法:统计二进制数据的数位中“1”的个数,若个数为奇数,则校验值为0,否则校验值为1。小李编写了一个计算机奇校验位值的Python程序,功能如下:输入1~255十进制待校验数,回车后出现该数对应的二进制值以及校验位值。 (1)实现该功能的Python程序如下,请在划线处填入合适代码。 n = int(input("请输入待校验数:")) t = 0 s ="" while ________________: a = n % 2 n = ___________________ t = ___________________ s = ___________________ v = t % 2 print("二进制值:",s) print("校验位值:",________________) (2)运行该程序,输入待校验数22,则显示的校验位值是________________。 学科网(北京)股份有限公司 $ Python基础复习(三) ——进制转换问题 一、进制转换 十进制转换为其他进制(k进制):除k取余倒排法 其他进制(k进制,逢k进一)转换为十进制,按照位权展开法 111B=_____7D_____ (23)8=______19D_____ 31H=_____49D______ 【经典例题】 1.下列数值中,与十六进制数30最接近的是( D ) A.29D B.31D C.110010B D.2FH 本题主要考查进制数的转换。二进制数和十六进制数可以通过“按权展开、逐项相加”的方法转换为十进制数,故30H=48D,110010B=50D,2FH=47D,故与十六进制数30最接近的是2FH,故本题选D选项。 2.下列各数中,比二进制数00010101小的数是( B ) A.00011010B B.11H C.35D D.AOH 本题考查的是进制数转换B:00010001 C:100011 D.10100000 3.有一个二进制数为1□101□0,其中有两位数字模糊不清,下列可能与其值相等的是( A ) A.84D B.64H C.53H D.52D 本题考查的是进制数转换。通常采用一个字母后缀来表示该数的进位制,在该数的最后以字母B、D、H分别表示二进制、十进制、十六进制。将十进制整数转换为二进制数可用“除2取余法”,将十六进制数转换为二进制数时,每一位十六进制数转换成四位二进 制数。84D=1010100,故选项A符合;64H=1100100,故选项B不符合;53H=1010011,故选项C不符合;52D=110100,故选项D不符合 4.有二进制和十六进制数相加的表达式:1101B+2CH,下列与其结果相等的是( C ) A.111001B B.111000B C.111010B D.111011 本题考查的是进制转换。两种方法,可以转为二进制算,也可以转为十进制算。1101B+2CH=1101B+101100B=111001B,故选项AD错误。 111001B转为十进制是57。故选项C正确。 5.将二进制数11B、十进制数15D和十六进制数10H按从大到小排序,下列正确的是( B ) A.10H,15D,11B B.10H,11B,15D C.15D,10H,11B D.15D,11B,10H 本题考查进制之间的转换。本题采用将二进制、十六进制数转换为十进制数之后再比较的方法,二进制数11B转换为十进制数为3,十六进制数 10H转换为十进制数为16,则三数的排列顺序为:10H15D11B,选项B正确。 6.一个4位十六进制数n,其末位数字为“0”。下列说法正确的是( B ) A.若将n转换为二进制数m1,m1的有效位数可能是12位 B.若将n转换为二进制数m2,m2的有效位数不可能是17位 C.若将n转换为十进制数m3,无法确定m3是否能被16整除 D.若将n的末位数字“0”去掉后,再转换为十进制数,所得的值为n/10 本题主要考査十六进制数。该十六进制数转十进制数,每一位数值可能在0~9之间;该十六进制数末位的"0”去掉后,分别转换为十进制表示,则所得的值是n/16;一位十六进制数由4位二进制数表示,若该十六进制数有4位(即需要二进制4*4=16位),存储该十六进制数最少需16/8=2B;一位十六进制数由4位二进制数表示,将该十六进制数转换为二进制数,则对应的二进制数末4位均为"0”,故本题选D选项。 7.已知某进制数的等式满足:23+5=30和30+52=102,则下列说法正确的是( C ) A.这两个等式为四进制数加法运算 B.这两个等式为十六进制数加法运算 C.等式23+5=30的计算结果30,转换为十进制数为24 D.等式30+52=102的计算结果102,转换为十进制数为258 本题考查的是进制数。由等式可知“逢八进一”故这两个等式是八进制数加法运算,故选项AB错误:八进制数30转换十进制数:3*8+0*1=24,故选项C正确;八进制数102转换十进制数:1*8^2+8+0*8+,2*1=66,故选项D错误。 8.用8位二进制表示有符号整数时,左边第一位为“0”表示为正,“1”表示为负。下列数值中与十进制数(-87)10相等的是( C ) A.1010111B B.01010111B C.11010111B D.11010110B 9.一个二位十六进制正整数n,末位是“9”,下列说法正确的是( ) A.无法确定n是奇数还是偶数 B.n+1是一个三位十六进制数 C.转换为十进制数,最小值是25 D.转换为二进制数,位数一定是8 本题考查的知识点是进制转换知识。由于十六进制数n的末位是9,因此该数肯定是奇数,故选项A错误。由于十六进制数在F后才会产生进位,当未位是9时,n+1的结果不会产生进位,故选项B错误。选项C正确, 最小的符合题意的两位十六进制数是19H,其十进制值为25D。转换为二进制数后位数不一定是8,例如29H,其对应的二进制数是101001B只有6位,因此D选项错误。故正确答案为C选项。 10.现有一个二进制数X为1□10□,其中“口”表示未知,以下关于这个数的说法正确的是( B ) A.X不可能是5的倍数 B.X可能是21 C.X<28肯定成立 D.X〉20肯定成立 本题考查的知识点是进制转换知识X可能是10100 20、11100 28、10101 21、11101 29 11.求一个十进制(-255~-1)负数的8位二进制补码方法是:将其对应的正数7位二进制所有位数取反(1改为0,0改为1)后加1,并设置符号位(最高位)为1。如求-3的8位二进制补码方法:3的7位二进制数为0000011,取反后为1111100,加1后为1111101,设置符号位为1,-3的8位二进制补码为11111101。则十进制数-5的8位二进制补码为( A ) A.11111011 B.10000101 C.11111010 D.11111100 本题考查进制转换。根据题干5的7位二进制是0000101,取反后为1111010,加1后为1111011,设置符号位为1,则补码为11111011。故本题选A。 二、进制转换代码实现 1、十进制转二进制、十六进制 1.将十进制n转二进制数存储在字符变量s中。例如:n=10,转换成二进制数后s=“1010” s="" # 字符变量清空 n=int(input()) while n>0: r=n%2 # 取余 s=str(r)+s # 拼接 n=n//2 # 取整 print(s) 2.将十进制n转16进制数存储在字符变量s中。例如:n=42,转换成16进制数后s=“2A” k="0123456789ABCDEF" s="" n=int(input()) while n>0: r=n%16 s=k[r]+s n=n//16 print(s) 2、 二进制转十进制 3.二进制数存储在字符串变量s中。使用“位权展开”法将二进制转换为十进制。结果存储在整数变量ans中。 法1: s="10011" ans = 0 n=len(s) for i in range(n): x=int(s[i]) ans=ans+x*2**(n-i-1) print(ans) 4.二进制数存储在字符串变量s中。使用“累乘相加”法将二进制转换为十进制。结果存储在整数变量ans中。 法2: s="10011" ans=0 n=len(s) for i in range(n): x=int(s[i]) ans=ans*2+x print(ans) 3、 十六进制转十进制 5.十六进制数存储在字符串变量s中。使用“位权展开”法将十六进制转换为十进制。结果存储在整数变量ans中。 法1: s="2A" ans=0 n=len(s) for i in range(n): ch=s[i] if ch>="A" and ch<="Z": x=ord(ch)-55 else: x=int(ch) ans=ans+x*16**(n-i-1) print(ans) 5.十六进制数存储在字符串变量s中。使用“位权展开”法将十六进制转换为十进制。结果存储在整数变量ans中。 法2: s="2A" ans=0 n=len(s) for i in range(n): ch=s[i] if ch>="A" and ch<="Z": x=ord(ch)-55 else: x=int(ch) ans=ans*16+x print(ans) 三、习题巩固 1、编写程序,实现如下功能:输入一个整数n,输入一个整数k,运行后,将十进制数n转换为k进制数并输出。比如n=25,k=2,转换为二进制后为“10011”,请补充代码。 n=int(input("请输入一个十进制整数n:")) k=int(input("请输入要转换的进制k:")) s="" n1=n while n1>0: r=n1%k n1=n1//k if r>9 : s=chr(r+55)+s else: s=str(r)+s print(k,"进制数的",n,"为",s) 2、编写程序,实现如下功能:输入一个整数s,输入一个整数k,运行后,将k进制数s转换为十进制数并输出。比如s=”10011”,k=2,转换为十进制后为“25”,请补充代码。 法1:法2: k = int(input("请输入一个进制:")) s = input("请输入一个该进制数:") n = len(s) s1 = "" ans = 0 for i in range(n): s1 = s[i] if s1 < "0" or s1 > "9": s1 = str(ord(s1)-55) ans = ans*k+int(s1) print(ans) k = int(input("请输入一个进制:")) s = input("请输入一个该进制数:") n = len(s) s1 = "" ans = 0 for i in range(n): s1 = s[i] if s1 < "0" or s1 > "9": s1 = str(ord(s1)-55) ans = ans+int(s1)*k**(n-i-1) print(ans) 学科网(北京)股份有限公司 $

资源预览图

python基础期末复习专项训练三-2025-2026学年浙教版高二信息技术期末复习必修一
1
python基础期末复习专项训练三-2025-2026学年浙教版高二信息技术期末复习必修一
2
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。