进制转换(***)
| 一、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位容器
|
|
【】利用模型的应用
|
| 四、查表法练习 |
| 有对应关系+有序数组 |
![]() |




















浙公网安备 33010602011771号