【读书笔记】语言基础-数值 练习(五)

发布于:2022-12-25 ⋅ 阅读:(534) ⋅ 点赞:(0)

练习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 后查看