计算机为什么不用三十二进制,32位进制导致2038年问题
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作。所有使用UNIX时
间表示时间的程序都将受其影响,因为它们以自1970年1月1日经过的秒数(忽略闰秒)来表示时间。
这种时间表示法在类Unix(Unix-like)操作系统上是一个标准,并会影响以其C编程语言开发给其他大部份操作系统使用的软件。在大部份的32位操作系统上,此“time_t”数据模式使用一个有正
负号的32位元整数(signedint32)存储计算的秒数。依照此“time_t”标准,在此格式能被表示的最后时间是2038年1月19日
03:14:07,星期二(UTC)。
超过此一瞬间,时间将会被掩盖(wrap
around)且在内部被表示为一个负数,并造成程序无法工作,因为它们无法将此时间识别为2038年,而可能会依个别实作而跳回1970年或1901
年。错误的计算及动作可能因此产生。
“千年虫”解决之后,会不会有新的“虫”出现?回答是肯定的,“2038年”就是一个新的关卡。
下图为演示图:
网络时代,机会与危机共存,这也许是你我必须面对和必须付出的代价。“千年虫”解决之后,会不会有新的“虫”出现?回答是肯定的,“2038年”就是一个新的关卡。
也许大家都已经知道计算机的2000年问题是什么概念,但是什么时候又冒出来一个2038年问题的呢?
用C语言编制的程序不会碰到2000年问题,但是会有2038年问题。这是因为,大多数C语言程序都使用到一个叫做“标准时间库”的程序库,这个时间库用一个标准的4字节也就是32位的形式来储存时间信息。
当初设计的时候,这个4字节的时间格式把1970年1月1日凌晨0时0分0秒作为时间起点,这时的时间值为0。以后所有的时间都是从这个时间开始一秒一秒累积得来的。
比方说如果时间已经累积到了919642718这个数值,就是说这时距离1970年1月1日凌晨0时0分0已经过去了919642718秒,换算一下就应该是1999年2月21日星期天16时18分38秒。
这样计算时间的好处在于,把任意两个时间值相减之后,就可以很迅速地得到这两个时间之间相差的秒数,然后你可以利用别的程序把它换算成明白易懂的年月日时分秒的形式。
要是你曾经读过一点儿关于计算机方面的书,你就会知道一个4字节也就是32位的存储空间的最大值是2147483647,请注意!2038年问题的关键也就在这里———当时间一秒一秒地跳完2147483647那惊心动魄的最后一秒后,你猜怎么样?
答案是,它就会转为负数也就是说时间无效。那一刻的准确的时间为2038年1月19日星期二晚上03:14:07,之后所有用到这种“标准时间库”的C语言程序都会碰到时间计算上的麻烦。
-----------------这就是2038年问题。
但是大家也不用太过紧张。2038年问题比Y2K(Year 2000
Problem)[千年虫]问题解决起来相对要容易一些,只要给那些程序换一个新版本的“标准时间库”就可以了,比如说,改用8字节64位的形式来存储时
间。这样做并不怎么费事,因为在C程序中“标准时间库”是相对独立的一个部分,里面的时间表达都有自己的一套时间类型和参数(而在碰到Y2K的那些大型主
机中,时间格式大都没有一)。
说到这里,一些冰雪聪明的菜鸟DDMM们应该可以联想到,WindowsNT用的是64位操作平台,它的开始时间是1601年1月1日———但是它每过1个纳秒就跳一下,因此,WindowsNT它会碰到的是2184年问题……
而在一些用64位来表示时间的平台上,例如DigitalAlpha、SGI、Sparc等
等,想要看到它们的时间出错你得等到天荒地老———那大概是292亿年。到那时,位于猎户座旋臂的太阳,已经是黑矮星或暗黑物质,猎户座旋臂已经被重力波
震断,银河系大概则已经变成小型似星体了。
所以,给那些准备攒机的菜鸟DD一个建议,除非您想要把资料流传给下一个宇宙,一台64位的电脑已经足够。
总之,32位的最后时间是2038年1月19日03:14:07,星期二。
64位的最后时间约2900亿年后的292,277,026,596年12月4日15:30:08,星期日。
解决进展
目前并没有针对现有的CPU/操作系统搭配的简单解决方案。直接将POSIX时间更改为64位模式将会破坏对于软件、数据存储以及所有与二进制表示时间相关的部份的二进位兼容性。更改成无符号的32位运算器(integer)则会影响许多与时间改变相关的程序。
大部份64位操作系统已经把time_t这个系统变量改为64位宽。不过,其他现有架构的改动仍在进行中,不过预期“应该可以在2038年前完成”。
然而,直到2006年,仍然有数以亿计的32位系统在运行中,特别是许多嵌入式系统。相对于一般电
脑科技18至24个月的**性更新,嵌入式系统可能直至使用寿命终结都不会改变。32位time_t的使用亦被编码于文件格式,例如众所周知的ZIP压缩
格式。其能存在的时间远比受影响的机器长。
64位进制可解决问题
新的64位运算器可以记录至约2900亿年后的292,277,026,596年12月4日15:30:08,星期日(UTC)。
计算机为什么不用三十二进制,32位进制导致2038年问题相关推荐
- 计算机组成原理第4位,计算机组成原理4位进制计数器实验报告.doc
计算机组成原理4位进制计数器实验报告 计算机组成原理实验一 4位二进制计数器实验 姓名:李云弟 学号:1座机电话号码5 网工1201 [实验环境] 1. Windows 2000 或 Windows ...
- 计算机一级中的进制,计算机一级课程中介绍的不同进制数转换方法之数学原理.doc...
本 科 生 毕 业 论 文(设 计) 2011 届 论文(设计)题目: 计算机一级课程中介绍的不同进制数转换 目 录 一.摘要····································· ...
- Python任意字符串转16, 32, 64进制
Python字符串转数字 import binasciis = 'test123456test'str_16 = binascii.b2a_hex(s.encode('utf-8')) # 字符串转1 ...
- 以0x开头的颜色值和#开头的颜色值都是16位进制的
以0x开头的颜色值和#开头的颜色值都是16位进制的 他们的0x开头的颜色值一般后面跟8位例如:0xfffefefe ,0x后面跟着前2个ff一般代表透明,后面跟着的6位和 #后面跟着6位相同, 目前自 ...
- (计算机组成原理)第二章数据的表示和运算-第一节1:一文总结进制转换,妈妈再也不用担心我不会进制转换了
文章目录 一:进位计数法 二:进制转换 (1)其他进制数转换为十进制 (2)十进制数转化为其他进制数 (3)二进制.八进制和十六进制的相互转换 三:真值和机器数 一:进位计数法 进位计数法是一种计数的 ...
- 64位计算机最大寻址,为什么说32位操作系统的寻址空间是4G
1. 什么是寻址空间 寻址空间一般指的是CPU对于内存寻址的能力.通俗地说,就是能最多用到多少内存的一个问题 2. 我们经常听说32位操作系统最多能用4G内存.大部分情况下,这个上限都达不到.例如我的 ...
- 计算机组成原理快速加法器与32位ALU设计实验报告(8位可控加减法电路设计、CLA182四位先行进位电路设计、4位快速加法器设计、16位快速加法器设计、32位快速加法器设计)
实验二 快速加法器与32位ALU设计实验 本次实验,进行了五个实验,分别是8位可控加减法电路设计.CLA182四位先行进位电路设计.4位快速加法器设计.16位快速加法器设计.32位快速加法器设计.这次 ...
- python中不同进制的整数之间可以直接运算_python学习第三天总结(进制与位运算,)...
进制 计算机在存储数字的时候都是以二进制的形式去存的 十进制.十六进制.八进制.二进制 1.十进制 基数:0,1,2,3,4,5,6,7,8,9 进位:逢10进1 每一位的值: 111 = 1 * 1 ...
- 32位计算机是指该cpu,32位机指的是计算机的CPU怎么样?
32位机指的是计算机的CPU能够同时处理32位二进制数据.32位计算机的CPU一次最多能处理32位数据,也就是4个字节的数据,例如它的EAX寄存器就是32位的,当然32位计算机通常也可以处理16位和8 ...
- 32位计算机直接访问的内存,32位64位-32位计算机可以访问多少内存?
32位64位-32位计算机可以访问多少内存? 32位或64位计算机是什么意思? 这是处理器架构-一台32位计算机可以与64位计算机同时读写32位数据-. 32位计算机可以访问的最大内存是多少? 它是2 ...
最新文章
- fsl线性配准介绍+核磁共振影像数据处理
- 【五线谱】变音记号 ( 升号 # | 降号 b | 重升号 x | 重降号 bb )
- javascript的promise
- 字符串的转换相关方法
- Android开发之自定义菊花进度条对话框
- JS之数组删除/添加项目方法splice
- 中国在线度假旅游市场专题分析2020
- 算法初级笔记(一)认识时间复杂度
- 双显示器 启动黑屏 黑苹果_教你注入EDID 解决黑苹果显示器显示问题
- PDF格式分析(六)PDF版本
- 笔记总结-相机标定(Camera calibration)原理、步骤
- 如何成为一名合格的算法工程师?我们做了一次技能拆分…
- 力扣第235题“二叉搜索树的最近公共先祖”的解题思路
- Windows电脑双屏设置不一样的壁纸
- 手把手学会 VS Code 快捷任务神技,成为项目组最靓的崽!
- LDA的使用记录--TREC,测试
- PMP精华集合:学习PMP最关心的10大问题,你必须要知道
- 沙发后面墙挂什么画 你需要一幅像样的装饰画
- 基于android的理财软件技术专业介绍,基于Android系统的个人理财软件的设计与实现...
- 2021-08-16Zynq linux系统下的AXI DMA驱动与应用程序简单Demo实现
热门文章
- VMware虚拟机磁盘扩容
- 关于word使用之三线表制作
- 基于JavaSwing开发医院信息管理系统 毕业设计 课程设计 大作业
- 阿里云服务器搭建 图文详细教程
- QCustomplot 实现鼠标追踪定位线以及坐标
- 为什么鼠标光标不是一条竖线而是一个小方块
- python用函数判断一个数是否为素数,python分享是否为素数 python输入并判断一个数是否为素数...
- python中判断一个数是否为素数_怎么用python判断一个数是否是素数
- 中心极限与大数定理律的关系_21厦大数学考研 | 数列与函数极限复习建议!
- 非常新能源铝电池项目的产业化展开的分析报告v1.1