欢迎来到奇葩栖息地!欢迎加入Discord服务器:XfrfHCzfbW请先至特殊:参数设置验证邮箱后再进行编辑。特殊:参数设置挑选自己想要使用的小工具!不会编辑?请至这里学习Wikitext语法。

模块:Chinese calendar:修订间差异

来自奇葩栖息地
添加77字节 、​ 2025年1月7日 (星期二)
// Edit via Wikiplus
无编辑摘要
标签已被回退
(// Edit via Wikiplus)
标签已被回退
第2行:
 
-- 位运算模拟函数
local function rshift(a, b)
if b < 0 then return lshift(a, -b) end
return math.floor(a / (2 ^ b))
end
 
local function lshift(a, b)
if b < 0 then return rshift(a, -b) end
return a * (2 ^ b)
end
 
local function band(a, b)
a = tonumber(a) or 0
b = tonumber(b) or 0
local result = 0
local bitval = 1
 
while a > 0 and b > 0 do
-- 转换为正整数处理
a = math.floor(math.abs(a))
returnb = math.floor(a / math.abs(2 ^ b))
 
while a > 0 andor b > 0 do
if a % 2 == 1 and b % 2 == 1 then
result = result + bitval
end
bitval = bitval * 2
a = math.floor(a / 2)
b = math.floor(b / 2)
end
return result
第314行 ⟶ 第311行:
function calendar.lYearDays(y)
local sum = 348
local info = if band(calendar.lunarInfo[y - 1900], i) ~= 0 then
if bnot < 0info then return lshift(a, -b)0 end
 
for i = 0x8000, 0x8, -1 do
iif = rshiftband(iinfo, 1i) ~= 0 then
if band(calendar.lunarInfo[y - 1900], i) ~= 0 then
sum = sum + 1
end
第324行 ⟶ 第323行:
 
function calendar.leapMonth(y)
returnlocal info = band(calendar.lunarInfo[y - 1900], 0xf)
if bnot < 0info then return rshift(a, -b)0 end
return a * band(2 ^info, b0xf)
end
 
function calendar.leapDays(y)
local info = calendar.lunarInfo[y - 1900]
if not info then return 0 end
if calendar.leapMonth(y) ~= 0 then
return band(calendar.lunarInfo[y - 1900]info, 0x10000) ~= 0 and 30 or 29
end
return 0
2,099

个编辑