本文小编为大家详细介绍“c++怎么实现数的转换”,内容详细,步骤清晰,细节处理妥当,希望这篇“c++怎么实现数的转换”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
算法:
这类算法的核心,在于负数的处理,也就是用到补码的转换,num = ((-num)^0xffffffff)+1。
对于不同进制的转换,采用取余数的方式,来进行操作。
对于不同数的转换,利用 a^b 来获取不同的数值,再通过a&(a-1)来将最右边的1清空来操作。
题目1: 数字转换为十六进制
代码实现:
func toHex(num int) string { // 利用数组存储16位数 ss := []string{"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"} res := "" a := []string{} if num ==0 { return "0" } if num <0 { // 负数转换为正数,采用补码的形式 num = ((-num)^0xffffffff)+1 } for num != 0 { // 通过偏移4为的方式来计算每个十六位的数值,八进制的话是0x7 tmp := num&0xf a = append(a, ss[tmp]) num = num>>4 } // 这里位数,从左到右是高位到低位,所以要转换 for i:= len(a)-1;i>=0;i-- { res += a[i] } return res}
题目2:整数转换
代码实现:
func convertInteger(A int, B int) int { // 负数转换成补码 if A < 0 { A = ((-A)^0xffffffff)+1 } if B < 0 { B = ((-B)^0xffffffff)+1 } t := A^B // 用来计算出A和B不同的位数1 c:=0 for t != 0{ t &= (t-1) // 用来将最右边的1设置为0 c++ } return c}
读到这里,这篇“c++怎么实现数的转换”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。