2024年1月14日发(作者:)

在很久以前,家里就有计算机,是个日本进口的笔记本。

好嘛,这个笔记本键盘都是日文和英文。配置很低,我呢总是把电脑玩坏,也就是所谓的中病毒,可以说一个星期就要花50多元钱去做系统。从那时候,我就很好奇为什么会坏,怎么坏的。从那个时候对电脑产生第一个好奇心。这个好奇,才有了我坐在这里学习。当然大家来这里学习是因为能找到工作,对我来说这个不是重要的,我特别喜欢玩电脑。可以说电脑是我最好的朋友。当然我学习电脑的语言是想告诉他可不可不那么死板。

但是有时候我又很好奇?这哥们为什么就比我聪明呢。为什么它的计算就是比我的速度快呢。

好的从现在开始我们带着好奇心来学习下电脑是怎么计算的。

好的从电脑组成说起。对于电脑最重要的东西是cpu和内存

内存是进行存储的,那cpu呢其实就像是个转换运算,大家都知存在内存里的数据都是以二进制的形式存储的比如我要cpu给我存储数字6和-6,,当然我们说的是10进制的数字。这个时候cpu就开始转换,变成

[0000-0110]

为什么是这样的写的呢?

好的计算机在内存基本单位是二进制位。

但是计算机在硬盘内存的基本单位是字节。

Cpu没办法它想让和硬盘成为好朋友就要遵循硬盘的规则,否则你就别和我成朋友。所以没办法只要写一个半角字符就要占一个字符的大小。大家可以创建一个文档试试。这里还有一个有意思的规矩,不管你里面写没有写东西,文档都要占用4kb的大小。就像wc一样,你不用也是那么大,你用了也是那么大,但是两个人总挤在一个wc里是不可能的,所以超出范围就会增加一个wc。

所以一个字节等于8个二进制位。

那-6是怎么表示呢?

-6就是0+(-6)

[0000-0000 ]+[0000-0110]——原码

[0000-0000]+[1111-1001]——反码

等于[1111-1001]

这个答案不是最终答案,因为还有一个补码?

什么是补码呢,或者说为什么需要补码呢?

再次之前问大家一个问题。

大家对于0这个数字是这么解释的呢?

0就是没有或者说是一个数字或者一件事情的开始和结尾,就像是个圆圈,开头连接这结尾。

好的对0的解释就是规则,是定义,比如十进制一个数的十进制有1,2,3,4,5,6,7,8,9加上规则就是0,1,2,3,4,5,6,7,8,9

在为任何一个数进行定义也可以是计算的时候是不是要考

虑,这数字是否要进位,现在我们就行一个思想化的简单10以内的计算5+6为了加上规则我是不是可以写成05+06,这里的0是告诉后面的那个不可以超出的规则,05+06=011这里0就起到了作用,5+6是不是超出了0-10的规则,那么这个0为了不让这个数字进行报错,强制的把0这个规则变成了1,为了不让这个计算出错。好的读到这里大家会想,这个有什么意义呢?或者觉得我说的这个好像没什么用处。

从这个里开始,我来告诉大家0这个重点。

大家都知道一个字节等于8个二进制位

八个二进制位最大值是[1111-1111]有人就会问那不是255嘛哪来的+127-128呢。

为什么要这样写,因为一个数字有正也有负,就像是个硬币,

打个比方,一个桌子上,放上一个硬币,既然是个硬币,那就一定有正反面。在计算机里是为了方便计算。

为了能让这个数字带上符号,就把二进制位的最进制位提取出来做符号,+(0)[111-1111]是不是就等于127了

那么负数的不就成了-(1)[111-1111]计算器得出来的是-1呀,不是-127呀,这里就要用到0的定义了。

0这个数大家有没有见过带负号的0呢,感觉的比较奇怪,好像没有什么意义。这里科学家就在想怎么才能他不带符号呢,我说过0是个规则,为了打破这个规则就让他超出范围好的[0000-0000]这个是不是表示0呢,那么负数的0呢是

不是取得这个数的反数就成了[1111-1111]打破这个规矩我给这个哥们加个1就变成了[1-0000-0000]这个才是0在字节里表现形式,但是字节不是八个二进制位嘛所以吧第九位的1就给舍去了,刚好1代表了负号。

所以就有补码的结论了补码只在负数里出现

那么负数的-128就成了

-(1)[111-1111]+[0000-00001]补码

等与了-(1)[1000-0000]这里又出现一个9位二进制位,没有舍弃而是隐藏了。所以补码的出现不仅解决了0带符号的问题,还得到了预知下一个数字。

127+127+补码的1+符号=256.