下面的程序检查一个数字的第三位是否为1.我在第三位(4)上取一个数字1,我将它与用户输入的数字进行比较。
到目前为止该计划有效,但我正在寻找不同的方法。我想知道是否有其他方法可以获得相同的结果。
var angryc:NSURL = NSBundle.mainBundle().URLForResource("MSoundEffect", withExtension: "mp3")!
try! angry = AVAudioPlayer(contentsOfURL: angryc, error: nil)
答案 0 :(得分:1)
你可以将数字两位向右移动,除以4,然后测试最后一位(移位前的第3位) - 如果数字为奇数,则为1
,否则 - 它是0
:
num = num / 4;
if (num % 2 == 1) //it was 1
else //it was 0
但你的方法也很好。
答案 1 :(得分:0)
if((number >> 2) & 1)==1) {
// same code as before.
}
会发生什么事情,你的号码会向左移动两次,所以说你的号码是12 - > 1100.所以在它移动后它变成0011.现在你可以将最后一位与1进行比较。
答案 2 :(得分:0)
由于您可以插入许多冗余操作,因此无数种方法。但是,如果将其限制为一个算术/逻辑运算加上一个相等测试/比较,则以下是一些可能性(对于第三位== 1,对于第三位= = 0,测试为真) -
(number & 4) != 0
(number | 4) == number
(number % 8) >= 4