复习一下二进制的理论知识。
计算机为什么要用二进制表示一切数据?
因为2个数可以表示一切,而且电极高低2种对硬件人员制作来说比较友好。
于是0就表示为空,1就表示有东西。
十进制转换为二进制
二进制是由0和1组成的,如01,0001他们都是一样的。因为都只有末尾1个1。其他都是空。
我随便写个2进制数 11010
观察一下,他是由什么组成?
是不是由4位组成,ok,这个位就是他的长度。那他的长度怎么得到的?假设给你1个十进制位的数,比如1,那么他的二进制就是1,给你一个0,那他二进制就是0,给你一个2,那他的二进制就是10,给你个3,那他就是11。他们就是通过向左边加1位,来记录十进制的数的。
然后发现,好像有下面一个公式能够记录它的位数。于是就只用记住公式,不用每次都推敲了
知道了这个,我们还要知道一个规则
0是0,1是1,10是2,11是3,100是4,101是5,110是6,111是7,1000是8
通过观察发现
2^次方对应的分别是10,100,1000的二进制
而这个次方又是位数。
所以另一个记住的是2^1次方对应的二进制是10,2^2次方就是100,每多一个次方,在后面加1个0.
学会了这2个公式,现在你已经出师了!
来算一下26的二进制是多少。
首先计算他的位数。log2为底的26,结果2^4是16,那显然不满足,2^5次方是32,覆盖了26,所以用32是可以表示的,那32是5位。
所以位是5.
10000,是16
1000,是8
24,还差2
再加1个2,2对应的2进制是10
那就是11010
然后比如这个11010
他的十进制是多少?
他是一个4位的数,2^4次方是16,那么10000就是16。然后后面1000是一个3位的数,那么就是2^3次方是8,那就是16+8然后最后是一个10,10是2,最后就是16+8+2=26.
现在已经可以做到随便一个数就能二进制转换了。随便给一个806,他的二进制是多少
log2为底806,是在2^9次方,512和2^10次方,1024之间。
那肯定要包含他,只有1024大于他,所以位数是10
1000000000,这个就是10位,再根据我们开头的公式,2的1次方是10,那他的9次方就是1*10^9。代表的是512。
1*10^8次方=100000000代表的是256
512+256=768
如果此时在加10^7次方,就是128,那就超了,然后退1级10^6次方,加64,也会超,所以只能加32,也就是10^5次方。
那么现在就是1100100000
768+32=800,现在还差6.那就简单了,2的1次方是10,2的2次方是100,2的3次方是1000。那3位就够了,100代表的是4,110就是6.那就在加110
最终答案就是1100100110
转过去也是一样的,先数,他是多少位,10位数。2^9次方就代表的是最开头的1
然后就是2^8次方代表第二个1,以此类推
2^9+2^8+2^5+2^2+2^1=806。二进制转换10进制就简单多了。
完结散花,不过一般考试不会给你上百,甚至上千这种。这种算起来麻烦,一般给的都是百内的数,随便算。
写着写着就莫名其妙用自己的方法推导了一遍。哈哈