进制转换(***)

一、32位二进制转换为16进制数字

步骤:

1先取后四位:与运算,该二进制和1111与运算,获取最后四位二进制数字

2后四位对应的符号打印出来,可以利用字符的自动升级和强制转化来和数字对应、(也可以来利用一个数组容器做到字符和数字对应,把符号存入另一个数组)

2之后该数右移四位:x>>>4(如果这个数最左侧是1,>>右移是移不完的,所以采用>>>)

3循环结束就是全部位移完成,完成则数字变为零。只要这个数不等于0就不断进行这个循环

【】只对60这个数字转化为16进制,只需要右移两次,按顺序写就可以

【】int数一般32位,最多右移8次

小于9的直接打印,大于9的temp另打印,选择结构

【】将123456789,10,11,12,13,14,15,16   和123456789ABCDEFG对应起来

其中1-9自然对应,问题是10以上和字母对应

可以利用ASCII码中A-Z都是顺序排列来构建,(temp-10)+‘A’自动提升,然后再强制转换转成字符(char)((temp-10)+‘A’)

 

【】这样虽然能打印出10以上字母,但是打印是打反的,而且0多余了

可以使用数组解决--查表法:符号群在模板数组中,然后把需要的符号再存入另一个数组,倒立打印这个数组即可

 
 
二、查表法

【】查表法,把对应模板数组的元素按需要打印出来,更加简单

但是还是反着的,还有许多空字,空字只打印有效位就行角标从0到pos就行了,反着可以

【】如果上来就把四位代表的字符存入临时容器最后一位,就更好了,本身就是正确值

角标开始是7,自减

只打印有效位

【】特殊例:一开始插入一个例外num=0,直接打印0,不用循环

 
 
三、练习---十进制转二进制
查报表法下,十进制转二进制、转八进制,都在十进制转十六进制的模型覆盖范围内,略作调整即可食用

【】转十六进制

【】以转十六进制为模板,造出通用模型---将输入的十进制,右移位数,与操作数作为变量,位数变为32位容器

【】利用模型的应用

 
四、查表法练习
有对应关系+有序数组
 
 
 
 
 
 
 
 
posted @ 2025-07-11 17:18  ibddindonon  阅读(15)  评论(0)    收藏  举报