原码反码补码的思考

自打大学毕业以来第一次鼓起勇气重新规划和构建自己的知识结构,其中自学计算机编程是一个大块,

也是听了很多大咖建议先从C语言学习(“C语言指针很接近计算机真实原理”),但是过程中由于自己的“发问精神”和“通透精神”这几个
“很不好的习惯”
让我学习过程中备受煎熬,就像曾今的大学物理课,一个复杂的公式,老师要求初略理解和记忆即可,而我却鬼使神差似的
一定要弄个清楚到可以达到自己的逻辑认
识为止,其实就是要让我自己信服的地步~~~哎,毕竟我知识尚也非天才再加上时间的“稀缺”(大部分时间浪费)也几乎放弃了物理学,

感觉扯远了,回到话题,相比之前的那些数学和物理,C语言算简单的了,不过要学通透也非一件很简单的事情。所以和大多数C语言学习

者一 样,我也查阅了很多关于计算机原理知识的帖子,果然是有很多收获,也是我人生第一次如此享受网络知识共享的力量,老者就
说“独学无友,孤陋而寡闻也!” 继续不停的 扯远,抱歉,一件事牵扯的东西实在是太多太多!
计算机只识别0和1,正因为两种状态是最容易识别的,就如有和无,阴和阳,男和女,大和小等等天地万物都有的最简单属性,
计算机依赖于硬件\n
而且所有复杂的计算都归属到加减法,包括逻辑运算,那么如何让计算机来实现呢,第一个要解决的就是把减法化成加法,即如何有效
的来表示一个可以实现加法运算的负数呢,这里前辈用到了补码这个概念,我通俗的逻辑理解就是:周而复始取余的拌法。再来举一个
生活中的例子:很多人玩过升级扑克牌这个游戏,当你家升级到Q的时候,再升两级就到达A,就赢了,可是很多地方规定,
假如这个时候高分一下升级了三级,就又要回到1级,所以最后几级必须小心出牌掌握分数了。嗯,扑克牌游戏,很简单,这个之中就有
一个补码的原理,Q+3=“1”,就相当于Q-11,是不是都明白这个道理,EN ,3就是 -11 的补码了,懂了么,
以上例子中,其实有一个模值就是14(循环体中最大值-最小值+1)=14-1+1=14,1~A刚好14,任何一张牌的补码牌就是14-其数值。
当然我这都是大胆的想象,至于具体的东西还是要阐述的更具体,毕竟我只是一个小白。

 **后记,关于二进制中的-0和0重复的问题,再参考补码原理,思来想去无法把两者联系起来,今天终于想到了,先贴上其他同学帖子的图片**

周而复始万物循环图:
在这里插入图片描述

* 好了,开始逻辑思考,假如一切负数都用反码表示,正数就是本身,来了,请问这里模值为多少呢?用一个字节空间来说吧,
都知道是256

反码对照表:
反码
按照之前的方法,模值=最大值127-(-127)+1=255,发现没,这里的模值不对似乎少了一个1,为什么?联想起来了么,就是因为有一个-0占去了一个位置,导致整个循环中丢失了一个值,因此才有了补码,在反码的基础上再+1.
好了,说的太过抽象,但是放着待以后更深的理解吧!

#include<stdio.h>
int main()
{
printf("hello,word,I love you");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值