16进制解码转换(汉字十六进制转换工具介绍)

   2023-05-13 互联网0
核心提示:今天这道题目呢,与前天讲的“龟兔赛跑”都是从PAT的基础编程题目中节选过来的。 难度不是很大,但是特别基础,复习到了基础知识,也就是二进制、十进制两者之间的相互转换。 我们先来看看这道题目的要求: BCD数是用一个字节来表达两位十进制的数,

16进制解码转换(汉字十六进制转换工具介绍)

今天这道题目呢,与前天讲的“龟兔赛跑”都是从PAT的基础编程题目中节选过来的。

难度不是很大,但是特别基础,复习到了基础知识,也就是二进制、十进制两者之间的相互转换。

我们先来看看这道题目的要求:

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。

所以,如果一个BCD数的十六进制为0x12,那么它的十进制也是12。

此时有一位小伙伴并不知道BCD数的运算规则,直接把0x12当作二进制来转换成十进制,那就会得到18。

现在呢,我们就期望能把这个错误得到的十进制,转换成我们期望得到的十进制数值。

给定的这个错误十进制范围为[0,153]。

题目要求呢我们都清楚了,接下来就是如何解决这个问题。

这里呢,主要涉及到的是十六进制和十进制之间以及二进制和十进制之间的转换。

但我呢,好像把这道题目给想复杂了emm,结果导致简单问题复杂化,实在是不应该啊。

理清逻辑,画出流程图,这是十进制转换为二进制再进行BCD解密

程序要写正确的话,流程图用来帮助理清逻辑非常好用,这张流程图画的有些小,真的有些不好意思。

可以从这张流程图中看出来,我的逻辑就是:

把该同学输入的整数先转换为二进制数,比方说给定的十进制数为18。

那么转换成的二进制数则为00010010。

之后再把二进制数转换为十六进制的形式则为0001和0010。

之后分别转换为十进制得到1和2。

然后求和1*10+2*1=12,最终得到结果。

我的代码部分:

注意,这里我用到了一个pow函数,这是一个求幂次方的函数,在用这个函数的时候,需要调用库#include

#include#includeint main(){ int number = 0;//初始化定义需要输入的十进制数 int store[8] = {0}; int mod = 0; int mild1 = 0;//求和 int mild2 = 0;//求和 scanf("%d", &number); for(int i = 0; i < 8; i++){ mod = number%2; number = number/2; store[i] = mod; } for(int i = 7; i >= 4; i--){ if(store[i]==1){ mild1 = mild1+pow(2,i-4); } } for(int i = 3; i >= 0; i--){ if(store[i]==1){ mild2 = mild2+pow(2,i); } } printf("%d", mild1*10+mild2); printf("n");} 测试结果:

提交PAT测试结果:

但是呢,我在思考,这道题目有没有更快的方法了。

毕竟这样从二进制开始写,十进制转化为二进制,然后再转化为十六进制,然后分开二进制转化为十进制的确麻烦了些。

于是,我再来认真地读了一遍这道题。

读来读去,只发现这道题是只需要我们直接把十进制转化为十六进制即可!然后再直接计算不就行了么。

BCD太迷惑人了!

十进制转化为十六进制的流程:

给定一个数18,18除以16等于1取余数得到2,再把1除以16等于0取余数得到1。

1和2组合起来,不也能得到最终结果吗?

流程图,这是十进制转换为十六进制再进行BCD解密 我的代码部分 #includeint main(){ int number = 0;//初始化定义需要输入的十进制数 int store[8]; int mod = 0; scanf("%d", &number); for(int i = 0; i < 8; i++){ mod = number%16; number = number/16; store[i] = mod; } printf("%d",store[1]*10+store[0]);} 测试结果

提交PAT测试结果

总结

在做这道题目的时候,我遇到了很多很多问题。

比方说逆序输出的时候,我直接把1和2按照顺序打出,但这样的话就会产生问题,最小值该如何判断。

还有要用到pow函数,这个可不能忘了。

总的来说,这道题呢,关键还是考我们对十进制、二进制和十六进制之间的转换是否熟悉。

如果很熟悉的话,这道题目直接十进制与十六进制转换一下就做出来了。

没必要像我最开始写的那样兜一个大圈子。

 
标签: 汉字 流程图 函数
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与爱美生活网(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 加一半减一半(加一半减一半猜字谜是什么字)
    加一半减一半(加一半减一半猜字谜是什么字)
    加一半减一半(加一半减一半猜字谜是什么字)字谜是一种文字游戏,谜面通过是汉字的结构或者意思表达,谜底为汉字本身,体现了中华民族文字和文化的博大精深,既能益智,又能娱乐,老少皆宜,今天分享5个字谜,供各位谜友切磋。12345
  • 日语难学吗零基础
    日语难学吗零基础
    日语零基础,学习起来会有一定难度;日语从学五十音开始,最好跟发音比较好的老师学习五十音图,然后,勤翻字典,加深对单词发音,意思的理解和记忆,掌握日语汉字的音读和训读的区别,做到举一反三,这样对日语学习大有裨益;有条件的话,可以多看日本的电影
  • 心火旺的危害是什么
    心火旺的危害是什么
    心火旺是一种中医的常见说法,一般分为实火旺和虚火旺。前者主要表现为睡眠不好、心悸不安、口腔溃疡、小便发黄等。而虚火旺的主要表现为盗汗和心烦、多梦、手心和脚底发热、盗汗、口干舌燥或等。中医(TraditionalChineseMedicine
  • 三的结构是什么(结构汉字偏旁瞿塘)
    三的结构是什么(结构汉字偏旁瞿塘)
    解释:1、数目,二加一的和。2、表示多次或数次。3、指历中九宫的第三宫,即东方震位。4、哲学用语。我国古代思想家用以称天地气合而生万物的和气 。5、姓。组词:1、再三:一次又一次,多次。2、三国:指东汉后出现的魏、蜀、吴鼎立的历史时期。亦以
  • 窨字是什么意思
    窨字是什么意思
    窨是一个汉字词语,多音yìn、xūn,释义为,指地窨子。窨,属于地方民间绝技,也称“料窨”,就是在特定的容器内,不加一滴水,通过温度的作用,把固体调料和液体调料混合后产生的气体调料作用到鱼体。
  • 马字边旁有哪些字(偏旁汉字合体学说)
    马字边旁有哪些字(偏旁汉字合体学说)
    马字边旁有驵、驶、驷、骂、驸、驹、驺、驼、驻、骀、驽、驾、骁、骃、骄、骅、骆、驳、骇、骈、骊、骋、验、骍、骏、骎、骐、骑、骒、骓、骕、骖、骗、骚、骙、骛、骜、骅、骝、蓦、驺、骞、骟、驱、骠、骡、骢、骖、骁、骄、驿、验、骤、骥、驴、骦、骧、骊
  • neng的汉字有哪些(汉字变为词素表意)
    neng的汉字有哪些(汉字变为词素表意)
    neng的汉字有:能néng,螚něng,䏻néng,䘅něng,㴰néng,㲌nèng等等。汉字(拼音:hànzì,注音符号:ㄏㄢˋㄗˋ),又称中文、中国字、方块字,是汉语的记录符号,属于表意文字的词素音节文字。世界上最古老的文字之一,已
  • 誉之日的誉字是什么意思(之曰赞美称扬汉字)
    誉之日的誉字是什么意思(之曰赞美称扬汉字)
    誉之曰的誉字的意思是:誉,中国汉字,读作:yù;该字的基本字义是名声的意思,如:荣誉、名誉、信誉、沽名钓誉;又作称扬,赞美之意:古同“豫”,欢乐。誉之曰的意思是夸耀、赞美的意思,之是文言文中的代词,曰就是说的意思。誉之曰就是:称赞他说。
  • 关于汉字的研究报告(汉字研究70年)
    关于汉字的研究报告(汉字研究70年)
    关于汉字的研究报告(汉字研究70年)作者:黄德宽(清华大学人文讲席教授、中国文字学会会长)汉字作为世界上唯一使用至今的自源古典文字,记录和传承了悠久而博大的中华文明,是中华民族对人类文明发展的一个伟大贡献。早在先秦时代,前人就开始了对汉字的
  • 肆的五笔怎么打(辜的五笔怎么打字)
    肆的五笔怎么打(辜的五笔怎么打字)
    新世纪五笔实施了第三代五笔字型的新专利,建立新的字根键位体系,重码频度降低,取码更加规范。易记好学,能处理27533个简繁汉字,走“彻底规范、亲近用户”的路线,并新创25项功能,该版本也被称为标准版,大家可以在“360软件管家”中找到王码大
点击排行