算法篇:数的转换
时间:2022-07-25
本文章向大家介绍算法篇:数的转换,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
算法:
这类算法的核心,在于负数的处理,也就是用到补码的转换,num = ((-num)^0xffffffff)+1。
对于不同进制的转换,采用取余数的方式,来进行操作。
对于不同数的转换,利用 a^b 来获取不同的数值,再通过a&(a-1)来将最右边的1清空来操作。
题目1: 数字转换为十六进制 https://leetcode-cn.com/problems/convert-a-number-to-hexadecimal/
代码实现:
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:整数转换
https://leetcode-cn.com/problems/convert-integer-lcci/
代码实现:
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
}
执行结果:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 小技巧整理(一)
- 20个能够有效提高 Pandas数据分析效率的常用函数,附带解释和例子
- 4.深入k8s:持久卷PV、PVC及其源码分析
- 5.深入k8s:StatefulSet控制器及源码分析
- 简介机器学习中的特征工程
- 在机器学习回归问题中,你应该使用哪种评估指标?
- 6.深入k8s:守护进程DaemonSet及源码分析
- 无所不能的Embedding 1 - Word2vec模型详解&代码实现
- 【JS】676- 1.1w字 | 初中级前端 JavaScript 自测清单 - 2
- matplotlib基础绘图命令之imshow
- 聊聊dubbo-go的broadcastCluster
- 爬取博客园文章
- 配置Python开发环境
- 部署Python应用
- 重写ThreadPoolTaskExecutor