为什么计算机起始时间是1970年1月1日

1969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。随后,汤普逊和同事丹尼斯里奇改进了B语言,开发出了C语言,重写了UNIX,新版于1971年发布。

那时的计算机操作系统是32位,时间用32位有符号数表示,则可表示 68 年,
用32位无符号数表示,可表示136年。

32位能表示的最大值是2147483647,另外1年365天的总秒数是31536000,
2147483647/31536000
68.1

也就是说32位能表示的最长时间是68年,而实际上到2038年01月19日03时14分07
秒,便会到达最大时间,过了这个时间点,所有32位操作系统时间便会变为
10000000000000000000000000000000
也就是1901年12月13日20时45分52秒,这样便会出现时间回归的现象,很多软件便会运行异常了。

到这里,我想问题的答案己经出来了:

因为用32位来表示时间的最大间隔是68年,而最早出现的UN以操作系统考虑到计算
机产生的年代和应用的时限综合取了1970年1月1日作为UNTIME的纪元时间(开始
时间)
至于时间回归的现象相信随着64为操作系统的产生逐渐得到解决,因为用64位操作
系统可以表示到292,277,026,596年12月4日15时30分08秒,相信我们的N代子孙,哪怕地球毁灭那天都不用愁不够用了,因为这个时间己经是千亿年以后了。

在这里插入图片描述
时间来到了292,277,026,596年
未来的某程序员甲:为什么计算机表示只能到这个时间292,277,026,596?
未来的某程序员乙:因为在292,277,026,596年前,那个时候的人们觉得这个时候地球应该已经没了吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP三次挥手四次握手(面试总结)

1、 为什么建立连接协议是三次握手,而关闭连接却是四次握手呢? 全双工通信。 这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个…

csdn怎么快速转载别人的文章

如何转载 用谷歌浏览器加载文章地址,打开文章F12打开Developer Tools,并打开Elements页面 将文章开头部分的文字作为关键字在Elements界面搜索 以此文为例:http://blog.csdn.net/aggressive_snail/article/details/54375876 搜索找了好久关…

解释性语言和汇编性语言对比

解释性语言和编译型语言的区别和不同解释性语言编译型语言概念计算机不能直接的理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言的编写的程序。翻译的方式有两种,一个是编译&#…

C++ 菱形继承 的 对象模型01

先看 普通菱形继承 #include <iostream> #include <string> using namespace std; class Animal {int a_age; }; class Sheep : public Animal {}; class Tuo : public Animal {}; class SheepTuo : public Sheep, public Tuo {}; void test1() {cout << …

伙伴算法

通常情况下&#xff0c;一个高级操作系统必须要给进程提供基本的、能够在任意时刻申请和释放任意大小内存的功能&#xff0c;就像malloc 函数那样&#xff0c;然而&#xff0c;实现malloc 函数并不简单&#xff0c;由于进程申请内存的大小是任意的&#xff0c;如果操作系统对ma…

CRC冗余校验举例和原理

什么是CRC校验&#xff1f;CRC即循环冗余校验码&#xff1a;是数据通信领域中最常用的一种查错校验码&#xff0c;其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查&#xff08;CRC&#xff09;是一种数据传输检错功能&#xff0c;对数据进行多项式计算&#xff0c…

C++ 多态原理初步01

当父类 Animal 的speak 前面加上 virtual 关键字之后&#xff0c;这个speak函数就变成了虚函数&#xff0c;Animal类结构发生了变化&#xff0c; 有了一个vfptr &#xff08;虚函数指针&#xff09;&#xff0c;指向了vftable&#xff08;虚函数表&#xff09;, 这个虚函数表里…

面向对象与面向过程的本质的区别

https://blog.csdn.net/jerry11112/article/details/79027834 如果你很想搞明白面向对象是什么&#xff0c;面向过程是什么&#xff0c;或者说二者之间的区别是什么&#xff0c;那么就花费一点时间来研读一下这篇博客&#xff0c;你一定会有很大的收获的&#xff01; 一、面向…

grep参数说明及常用用法

grep参数说明及常用用法 查看文件内容 [koulocalhost ~]$ more size.txt b124230 b034325 a081016 m7187998 m7282064 a022021 a061048 m9324822 b103303 a013386 b044525 m8987131 B081016 M45678 B103303 BADc2345 [] : 查看符合范围内的信息 [koulocalho…

进程的状态与种类

● 运行&#xff1a;正占用处理器   ● 就绪&#xff1a;只要获得处理器即可运行。   ● 阻塞&#xff1a;正等待某个事件&#xff08;如I/O完成&#xff09;的发生。  在不少系统中&#xff0c;还增加了两种基本状态&#xff1a;   ● 新状态&#xff1a;一个进程刚刚…

int * p =NULL;和*p =NULL的区别a和a的区别

1.int * p NULL;和*p NULL的区别 1 .int * p NULL int *pNULL&#xff1b;定义一个指针变量p&#xff0c;其指向的内存里面保存的是int类型的数据&#xff1b;再定义变量p的同时把p的值设置为0x00000000&#xff0c; 而不是把*p的值设置为0x00000000 2.*p NULL int i 10&am…

当我们说TCP是可靠协议时,我们真正表达的是什么

转载出处&#xff1a;https://blog.csdn.net/dog250/article/details/82177299 很明确地说&#xff0c;从通信意义上推敲&#xff0c;TCP一点都不可靠。一个抽象的协议&#xff0c;怎么可能左右介质来保证可靠&#xff0c;不存在的。但凡是经由某种介质的通信行为均不可能是绝对…

有一个小白程序员,写了一个只能对5个数字进行排序的函数,现在有25个不重复的数字,

题目&#xff1a;有一个小白程序员&#xff0c;写了一个只能对5个数字进行排序的函数&#xff0c;现在有25个不重复的数字&#xff0c;请问小白同学最少调用几次该函数&#xff0c;可以找出其中最大的三个数&#xff1f; A.5 B.6 C.7 D.8 答案&#xff1a;C 解析&#xf…

初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为

初始序列为1 8 6 2 5 4 7 3一组数采用堆排序&#xff0c;当建堆&#xff08;小根堆&#xff09;完毕时&#xff0c;堆所对应的二叉树中序遍历序列为&#xff1a;&#xff08;&#xff09; 8 3 2 5 1 6 4 7 3 2 8 5 1 4 6 7 3 8 2 5 1 6 7 4 8 2 3 5 1 4 7 6 A

设一组初始记录关键字序列为(25,50,15,35,80,85,20,40,36,70)进行一趟归并后的结果为

设一组初始记录关键字序列为(25&#xff0c;50&#xff0c;15&#xff0c;35&#xff0c;80&#xff0c;85&#xff0c;20&#xff0c;40&#xff0c;36&#xff0c;70)&#xff0c;其中含有5个长度为2的有序子表&#xff0c;则用归并排序的方法对该记录关键字序列进行一趟归并…

文字常量区和栈区考点

求以下程序输出结果 #include <stdio.h>char * fun1() {char * str "hello";return str; }char * fun2() {char str[] "world";return str; } int main() {printf("%s\n", fun1()); printf("%s\n", fun2()); return 0; }结…

判断栈的压入和弹出

序列1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5是压栈序列。序列 4&#xff0c;3&#xff0c;5&#xff0c;1&#xff0c;2是弹出序列。判断第二个是不是弹出序列 三步走 如果下一个弹出的数字刚好是栈顶数字&#xff0c;直接弹出如果不在栈顶&#xff0c;就一直…