3.1
0x12 = 18,0xA = 10,0xFFFFFFFF = 4294967295,0x1P10 = 1024,0x0.1p1 = 0.125
0xABFG中不能有G,剩下的都是错误的
3.2 设maxinteger=max,mininteger = min
- max+max-1 = -1-1 = -2
- min-1+1+min = -1+1 = 0
- maxmax = (min-1)(min-1) = 0-2*min+1 = 1
- min*min = 偶数个min相加= 0
3.3
负数求余和正数求余
3.4
指数从右往左运算
2^指数3指数4 =2指数81
下一个一样
3.5
12.7可以表示成以10为底的幂作为分母的分数,你能把12.7表示为以2为底的幂作为分母的分数吗?再试试5.5?
只需找到一个 2^n * 12.7 结果是一个整数
function exercise3_5(num)
local base,sp,cnt=1,num,0
while math.tointeger(sp)==nil do --sp%1~=0 也可以
base=base*2
cnt=cnt+1
if cnt==63 then
io.write("Huge Number,Can Not Solve!\n")
return
end
sp=num*base
end
sp=math.tointeger(sp)
io.write("Got It , 2^",cnt,"\n");
io.write(sp,"/",base,"=",sp/base);
return
end
5.5同样用这个求
3.6
function exercise3_6(h,p)
return 1.0/3.0*((math.tan(math.rad(p))*h)^2.0*math.pi)*h
end
3.7
function exercise3_7()
local rand1,rand2=math.random(),math.random()
rand1=rand1==0 and (1) or (rand1)
rand2=(rand2==0) and (1) or (rand2)
return math.sqrt(-2.0*(math.log(rand1)))*math.sin(2*math.pi*rand2);
end