计算机基础:2进制和2进制算法。
计算机底层语言就是2进制。2进制世界里不是0就是1。而平常我们用的数字或者计算都是十进制的。所以这里说一下二进制,以供大家参考。
(1)二进制和十进制。
大家都知道十进制是满十进一,举个例子9+1=10;89+1=90;(这个大家当然都知道)。
二进制和十进制这个地方也是相似的,是满2进1,举例子:01+1=10;11+1=100;。。。
(2)二进制转化为十进制
而二进制转化为十进制很好理解,如:二进制1011转化为十进制为11;(这里的符号位先忽略)也就是
ana(n-1)a(n-2).....a3a2a1(二进制)=an2^(n-1)+a(n-1)2^(n-2)+a(n-2)2^(n-3)....a32^(2)+a22^(1)+a12^(0)(十进制);
就是2^(二进制的位数-1)乘以位数上的值 的总和就是转化为的十进制。
(3)十进制转化为二进制(整数)
十进制整数转二进制数:除以2取余,逆序排列。
(4)二进制的加减乘除
“+”:有四种情况:0+1=1;1+1=10;1+0=1;0+0=0;也就是逢2进1。
“-”:0-0=0;1-0=1;10-1=01;1-1=0;不满借一
“*”:0*0=0;1*0=0;0*1=0;1*1=1;
“/”:0/1=0;1/1=1;
(5)二进制的原码,反码,补码。
原码就是:十进制数转换成二进制变成的二进制数或者可以说待处理的二进制数都可一说成原码。
反码:就是原码所有取反(1变0,0变1);
补码:就是反码加一。(补码就是负数在计算机中的二进制表示方法,求补码的十进制就是:补码减一取反加负号)。
(6)二进制运算符
“&”(按位与):1&1=1;1&0=0&1=0&0=0(数的对应位均为1,则为1;反之,则为0)。
例:
“|”(按位或):1|0=0|1=1|1=1;0|0=0(数的对应位只要有1,则为1;反之,则为0)。
“^”(按位异或):1^1=0^0=0;0^1=1^0=1;(相同异或为0;不同异或为1)。
“~”(按位取反):~1=0;~0=1;(1变0,0变1,并且符号位参与运算就是正数取反是负数,负数取反是正数)。
“<<”(按位左移):c=a<<b;(a左移b位。右边补0)
“>>”(有符号的右移):c=a>>b;(a右移b位,左边补符号位。注意:负数以原码参与运算)。
“>>>”(无符号的右移):c=a>>>b;(a右移b位。左边补0。注意:所有数据以无符号的方式参与运算)。
关于Java的二进制一些小命令:Integer.toBinaryString(a);(把a值转换为2进制)
Integer.valueOf("a", 2);(把2进制的a转换为int值)
(平常其他进制用的也不多,所以8进制、16进制和其他暂且不讨论)