在这个例子中,0xFFFFFFFF是做什么的?

时间:2016-02-18 11:11:03

标签: swift swift2

据我所知,arc4random返回无符号整数,最大为(2 ^ 32)-1。在这种情况下,它总是给出0到1之间的数字。

var x:UInt32 = (arc4random() / 0xFFFFFFFF)

除以0xFFFFFFFF如何导致数字介于0 - 1?

之间

2 个答案:

答案 0 :(得分:4)

如你所说,

  

arc4random返回无符号整数,最大为(2 ^ 32)-1

0xFFFFFFFF等于(2 ^ 32)-1,这是arc4random()的最大可能值。因此,算术表达式(arc4random() / 0xFFFFFFFF)为您提供了一个始终在0和1之间的比率 - 因为这是一个整数除法,结果只能在0和1之间。

答案 1 :(得分:2)

要接收0到1之间的值,结果必须是浮点值

import Foundation
(1..<10).forEach { _ in
    let x: Double = (Double(arc4random()) / 0xFFFFFFFF)
    print(x)
}
/*
 0.909680047749933
 0.539794033984606
 0.049406117305487
 0.644912529188421
 0.00758233550181201
 0.0036165844657497
 0.504160538898818
 0.879743074271768
 0.980051155663107
 */