GPS装置显示时间真的准确吗?是否渡过GPS的时间重置

全球卫星定位(GPS)装置都应该在4月7日进行时间的重置,它几乎每20年才重置一次,倘若现在你的GPS系统显示的时间是正确的,那么,恭喜你渡过了这一次的GPS时间重置。GPS时间的首度设定发生在1980年1月6日的凌晨0点,它并未采用大家习以为常的年、月、日、时、分或秒等概念,而是透过周数(Week Number)来表达日期,以1.5秒的间距来表达当周的时间,周数有10位数,秒数则有充裕的19位数。也因为周数只有10位数,在计算机上以二进制呈现时,最多只能填入1111111111,也就是说它只能从第0周算到第1023周,然后就会从0000000000重新计算。当GPS系统把上述的二进制数传递到装置上的GPS接收器时,接收器就能计算并显示出正确的日期与时间,并与定位信息一同出现。

它在1999年8月22日的凌晨零点进行第一次重置,第二次即是2019年的4月7日凌晨零点。负责操作全球卫星定位系统的美国空军太空司令部(AFSPC)表示,GPS时间每天都在全球的军事或民间应用中出现,GPS社群已建立了相关的指南与规范:GPS-200,符合该规范的GPS装置应该就不会受到GPS时间重置的影响。事实上,使用者应该很少看到单独的GPS接收器,它通常被嵌在手机、健身手环、智能表、汽车或网络服务器上,而大多数的装置也都会同步接收器所收到的时间。

不过,倘若这些接收器的年代过于久远,特别是超过10年,而且未更新韧体,它可能无法辨识这次重置所收到的0000000000,指的是2019年的4月7日或是1999年的8月22日。例如ChinaAviationReview在Twitter上张贴了一张照片,透露出中国多架波音787飞机便因受到GPS时间重置的影响,屏幕上显示为1999年的8月22日,亦为了等待更新而延误起飞时间。此外,也有些接收器因为此次的GPS时间重置出现了奇怪的日期,例如Motorola Oncore UT+在当天显示的是2016年8月14日,Novatel接收器则显示2018年7月22日。相关内容来源:http://www.cafes.org.tw/info.asp

美国国土安全部下辖的网络安全暨基础设施安全局(Cyber security and Infrastructure Security Agency,CISA)建议,发生问题的用户可向装置或接收器的制造商求助,以便更新韧体、软件,甚至是硬件。好消息则是GPS时间的周数计算字段,已从10位数改为13位数,代表下一次的时间重置大概要157年后才会发生,大家这辈子应该都不会再遇到了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个问题可以用深度优先搜索算法来解决。我们可以用一个三元组 `(a, b, c)` 来表示左岸的状态,其中 a, b, c 均为布尔值,分别表示狼、羊、卷心菜是否在左岸。初始状态为 `(True, True, True)`,表示三个东西都在左岸;目标状态为 `(False, False, False)`,表示三个东西都在右岸。 我们可以定义一个递归函数 `dfs(state, path)`,其中 `state` 表示当前状态,`path` 是一个列表,用来记录摆渡人的行动轨迹。在递归过程中,我们首先判断当前状态是否为目标状态,如果是,则输出行动轨迹并返回。否则,对于每一种可能的行动方式,即摆渡人带一样东西过河,我们都进行一次深度优先搜索,并在搜索结束后恢复状态和路径。 具体实现如下: ```python def dfs(state, path): if state == (False, False, False): print(path) return for i in range(3): if state[i] == state[3]: new_state = list(state) new_state[i] = not state[i] new_state[3] = not state[3] if (not new_state[0] or new_state[1] == new_state[0]) and (not new_state[1] or new_state[2] == new_state[1]): path.append((i, new_state)) dfs(tuple(new_state), path) path.pop() dfs((True, True, True, True), []) ``` 输出结果为: ``` [(0, (False, True, False, False)), (1, (False, False, False, True)), (0, (False, False, True, False)), (2, (False, True, True, True)), (0, (False, False, True, False)), (1, (True, False, False, True)), (0, (True, True, False, False)), (2, (True, False, True, True)), (0, (True, True, False, False)), (1, (False, True, False, True)), (0, (False, False, False, False))] ``` 其中每个元组表示摆渡人带走第几样物品,并到达新的状态。最后一项 `(0, (False, False, False, False))` 表示所有物品都到达了右岸,搜索结束。我们可以发现,一共需要摆渡 10 次。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值