美文网首页
Swift-整数A转成整数B

Swift-整数A转成整数B

作者: FlyElephant | 来源:发表于2017-05-09 10:19 被阅读32次

题目: 编写一个函数,确定需要改变几个位,才能将整数A转成整数B.

解法一

改变的位就是找到两个数字不同的位,通过异或,然后遍历异或的结果即可.
核心代码:
<pre><code>`
var result:Int = a ^ b
var count:Int = 0

    while result != 0 {
        if (result & 1) > 0 { // 判断最低位是否为1
            count += 1
        }
        result = result >> 1
    }
    
    return count
}
`</code></pre>

解法二

先异或之后将异或低位不断清零.
核心代码:
<pre><code>`
var result:Int = a ^ b
var count:Int = 0

    while result != 0 {
        count += 1
        result = result & (result - 1) // 不断的将低位清零
    }
    
    return count
}`</code></pre>

测试代码:
<pre><code>var bitCount:Int = bitManager.bitSwapRequired(a: 10, b: 100) var bitCount2:Int = bitManager.bitSwapRequired2(a: 10, b: 100) print("FlyElephant--需要改变:\(bitCount)位---\(bitCount2)位")</code></pre>

FlyElephant.png

相关文章

  • Swift-整数A转成整数B

    题目: 编写一个函数,确定需要改变几个位,才能将整数A转成整数B. 解法一 改变的位就是找到两个数字不同的位,通过...

  • 整数转换

    题目: 整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。 示例: 输入:A = 29 (或者0b...

  • 整数字符串转成整数值

    引言 我们刚写完32位整数转化成英文表示和汉字表示,其中需要考虑Integer.MIN_VALUE的溢出情况,我们...

  • 小学数学学习笔记(整除、因数和倍数)

    一.整除 1.整除:整数a除以整数b(b≠0),商是整数而没有余数,我们就说a能被b整除,或b能整除a。 2.整除...

  • leetcode-设置交集大小至少为2

    题目: 一个整数区间 [a, b] ( a < b ) 代表着从 a 到 b 的所有连续整数,包括 a 和 b。...

  • 费马小定理与欧拉定理

    定义若整数a和整数b,除以正整数m得到的余数相等,称为a,b模m同余,记作。费马小定理若p为质数,a是任意整数并且...

  • 约数(小学生数学笔记)学习经验分享

    1.如果整数a除以整数b(b≠0),除得的商正好是整数而没有余数。那么,a称为b的倍数,b称为a的约数。如4能被1...

  • JS 将数字转成千分位的方法

    例如:请将10000000.01转成10,000,000.01 1. 正则转换【正整数】 只能用于正整数,不能有小...

  • 求两个数的最大公约数

    1. 什么是约数 整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,就将b称为a的约数。 2. 什么是最大...

  • DML数据库类型

    一、整数类型 1、 整数类型 INT 1) TINYINT SMALLINT MEDIUMINT B...

网友评论

      本文标题:Swift-整数A转成整数B

      本文链接:https://www.haomeiwen.com/subject/axjbtxtx.html