简单重新认识二进制中的码
以前也常看这些知识,但是大家讲的都形态各异,而且很多地方讲的太过于知识化,也就是将一个简单的东西复杂化了。今天重新看了下郝斌老师讲的这块,感觉很容易懂的,而且就是要结合在代码里面的运用理解来解释,东西确实很简单。所以也相信有些东西听懂一次就可以了,但是这一次的听懂确实需要一个好的老师告诉你。
所有的这些都是以按权展开法为基础的!
Q1
先看下原码
原码就是将正常的非二进制的转化为二进制的一串数字,也被称为:符号-绝对值码;
这里有几个特点:
最高位为0表示正数,最高位为1表示负数,其余位为该数字的绝对值的二进制位;简单易懂;
但是它的加减乘除复杂,0表示也不唯一(这里对于计算机就很不好)
Q2
反码
就是原来的二进制代码取反,其实际没有啥意义,就是在用补码过程中需要使用的代码而已。
Q3
补码
补码是为了计算机中存储和加减运算所用的,因为这里对减法可以转化位加法对计算机更加的容易方便。其实这里只要搞清楚十进制转二进制,二进制转十进制就可以懂补码。
十进制转二进制:
正整数转二进制:对原数除以2,直至商为零,余数以倒序排列即为这个数的二进制;
如下图所示流程:
如何鉴别真假人口普查员
负整数转二进制:先求绝对值的二进制,然后取反码,末位数加1即可,左边不够补1即可。
二进制转十进制:
首位为0,则为正数,普通方法求
首位为1,全部取反码,末尾加1,所得即为所得数字的绝对值。
接下来可以从定义的角度考虑下:
首先看下二进制的补码表示法:
例如:-13为负数,那么他的二进制为:1,1101,前面的第一个1为符号位,剩下的位他的绝对值的二进制,使用定义可以得到:补码为:2的n+1(这里n为位数是4)次方加-13,即:100000 - 1101 = 10011
即为:-13的补码为10011;
这是从定义角度理解二进制的反码补码,最终可以得出结论:
总结
骐程