c++怎么实现数的转换

发布时间:2022-03-17 16:07:54 作者:iii
来源:亿速云 阅读:274

本文小编为大家详细介绍“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++怎么实现数的转换”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. C++实现十进制数转为其它进制数的方法
  2. C++如何实现生成随机数

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:c++如何删除倒数第k个节点

下一篇:c++如何求1的个数

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》