十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本文小编为大家详细介绍“c++怎么实现数的转换”,内容详细,步骤清晰,细节处理妥当,希望这篇“c++怎么实现数的转换”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
创新互联2013年至今,先为善左等服务建站,善左等地企业,进行企业商务咨询服务。为善左企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
算法:
这类算法的核心,在于负数的处理,也就是用到补码的转换,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++怎么实现数的转换”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注创新互联行业资讯频道。