练习1:以下哪些是有效的数值常量?它们的值分别是多少
.0e12 .e12 0.0e 0x12 0xABFG 0xA FFFF 0xFFFFFFFF
0x 0x1p10 0.1e1 0x0.1p1
解:
.0e12 = 0 0x12 = 18 0xA = 10 0xFFFFFFFFFF = 429496729 0x1p10 = 1024 0.1e1 = 1.0 0x0.1p1 = 0.125
练习2:解释下列表达式之所以得出相应结果的原因。(注意:整型算术运算总是会回环)
> math.maxinteger * 2 --> -2
> math.mininteger * 2 --> 0
> math.maxinteger * math.maxinteger --> 1
> math.mininteger * math.mininteger --> 0
解:
1. 乘2相当于左移1位,0111…1111左移1位后变为1111…1110,对应的原码值就是 -2
2. 1000…0000左移1位后变为 0000…0000,对应的原码值就是 0
3. 0111…1111 * 0111…1111 除最低位是1不变,其他位均发生进位后为 0(每高一位1的个数加1,进位得到的1也加一,一直保持偶数个1)
4. 最高位发生进位后,所有位都是 0
练习3:下来代码的输出结果是什么?
for i = -10, 10 do
print(i, i % 3)
end
解:
--结果为
-10 2
-9 0
-8 1
-7 2
-6 0
-5 1
-4 2
-3 0
-2 1
-1 2
0 0
1 1
2 2
3 0
4 1
5 2
6 0
7 1
8 2
9 0
10 1
这道题正数之间的求模都会,但是 负数求模就不会了,拿第一个循环 -10 % 3 为什么等于 2 来说 ,就没有这么容易了,查了下CSDN得出了 结果:你真的搞懂了负数求模吗?
得出 Lua 语言用的是 floor 除法,趋负无穷截尾。即可得出
> -10 % 3 = -10 - floor(-10 / 3) *3 = -10 - (-4) * 3 = -10 + 12 = 2 -- 解决!!
练习4:表达式2^3^4的值是什么?表达式2^-3^4呢?
解:由于幂运算是右结合,所以
2^3^4 = 2^81 = 2417851639229258349412352
2^-3^-4 : 同上
练习5:当分母是10的整数次幂时,数值12.7与表达式127/10相等。能否认为当分母是2的整数次幂时,这是一种通用规律?对于数值5.5情况又会怎样?
练习6:请编写一个通过高、母线与轴线的夹角来计算正圆锥体体积的函数。
练习7:利用函数math.random编写一个生成遵循正态分布(高斯分布)的伪随机发生器。
本文含有隐藏内容,请 开通VIP 后查看