【进制运算】计算机的小任性——我说0代表正数,1代表负数,就是对的!

      话说我平时无聊就会想一些奇奇怪怪的问题,今天又突然想到了一个奇怪的问题——为啥计算机里“0”代表的是正数,“1”代表的是负数?

      为此,我专门百度了下这个问题的答案  ↓↓↓↓↓↓

 知心的百度回答者热心又专业地回答了我这个“正经”(没事找事)的问题

                                               ↓↓↓↓↓↓

                                                 ↓↓↓↓

                                                   ↓↓

                                                    ↓

   

————————————不过......em......———————————

                                     

————————老师说的好复杂......我听不懂呀%>_<%—————

 不够经过我的刻苦专研(垂死挣扎)之后,终于对这个问题有了一丢丢见解~~

                                                                 

                          首先!在解析之前需要知道两个前提!!

————————————NO.1———————————————

 受硬件的约束(cpu的电路中,只有两种电信号,“1”表示通电,“0”表示断

                           电),计算机采用二进制方式进行工作。

        

——————————————NO.2——————————————

      计算机使用二进制,但平常工作时却通常把二进制翻译成十六进制

                                              为啥?

                 因为懒和麻烦......把十六进制翻译成二进制阅读方便......

                                 

——————————————以上—————————————

                    有了上面两个前提之后呢,我们开始幻想~~~~

                        幻想计算机储存数据的地方是一个水桶~~

                                                     然后就有了以下画面

                                                                   ↓↓

                                 

       然后我们知道,数据是可以分为无符号(unsigned)类型和有符号(signed)类型的【Tip:不管是什么类型,都是为了计算方便而人为地设定出来的,计算机本身并没有任何类型,只有简单的二进制运算而已喔~

—————————看清楚这是符号的分割————————— 

           我们假设这个水桶只能储存4bit(位)的数据

        

                                                 辣么!!!

                            这些数据在水桶里就是酱子储存的!!

                               

——————————看清楚这是符号的分割———————— 

         然后,如果是有符号的话,就会把水桶切成一半,一边放正数,一半放负数!

                                              辣么!!!

                      这些数据在水桶里就是酱子储存的!!

                        

                       然后!!!密切关注边界两边的16进制数字!!

                                      它们的二进制数是这样的!

                              

                                                注意到木有!!!

负数的开头最左边的一定是“1”,而正数的开头最左边的一定是“0”!

                                                     所以!

                 我终于用我的“歪理”,证明了0代表正数,1代表负数!

                                                                           

———————还有还有,这里还有一些小知识————————

                                      

Tip1:由于处于边界的负数“F”再向右边跨越就是正数的“0”,所以这里的“F”所代表的就是十进制的“-1”,而我们通常称之为它是“1”的补码,二进制为“1111”。类似地,“E”代表的就是十进制的“-2”,它的二进制就是正数“2”的补码—>“1110”。

 

Tip2:根据以上的理解,边界的负数“7”再向左跨越就是负数“8”,所以这里的“8”代表了某个数字的补码,但具体是哪个数字的补码要看这个储存单位的大小而定。

————————————————————————————————

                                 最后还有一丢丢问题在这里~

问:为什么要假设是4位?    

答:其他位也阔以,我只是为了懒和简单说明。

 

问:为什么要从中间分开?为什么不从其他地方分开?

答:因为这是人为设定的,然后大家都遵守了这个规定。

问:为什么左边是负,右边是正?反过来不行吗?

答:因为这是人为设定的,然后大家都遵守了这个规定。

问:为什么数据排序这么整齐?不可以是乱排的吗?

答:因为这是人为设定和图是我画的,然后大家都遵守了这个规定(奸笑)。

猜你喜欢

转载自blog.csdn.net/qq_41884002/article/details/81228998
今日推荐