什么是二进制,进制之间是如何转换的,浅显易懂的,一看就会

什么是二进制呢?
二进制数据是用0和1两个数码来表示的数,它的基数为2,进位规则是逢二进一

加法:0+0=0;1+0=1;0+1=1;1+1=0(等价于10,向前进一)

案例(前面用0补齐)
1+1=10,10+1=11,11+1=100,100+1=101,101+1=110,110+1=111,111+1=1000 ...

 减法: 0-0=0,1-0=1,1-1=0,0-1=1
案例:101010-1101=1111
下图是什么意思呢,就是向前借来的当做2(即10)来计算
即自己向前借一位,当2用,借出给右边的时候,借出1个自己还留1.
下图中括号的公式为(借来的-借出的+上面已有的-下面要减的)

从右到左计算步骤
倒数第1列:
    当前为0-1,需要向倒数第2位借一(注意此处并没有借出),即2+0-1=1 (借来的+上面已有的-下面要减的)
倒数第2列:
    由于倒数第二位上面的1被借走了,所以当前为0-1,需要向倒数第三位借,倒数第三位为0不够,那么倒数第三位需要再往前借,借        到后再借给当前的倒数第二位(注意此处,借过来的并没有再借出),就是2+0-1=1 (借来的+上面已有的-下面要减的)
倒数第3列:
    由于步骤2像前借了,所以此处借过来的为2-1=1(2为像前借过来的,1为被后面借走的) ,所以当前为1-0,即2-1+0-0=1
倒数第4列:
    步骤2的时候已经被借走了,所以当前为0-1,像倒数第5位借,倒数第5位没有,接着向前借(同步骤2),借到后,2-1+1-1=1
倒数第4列:
    同步骤2.结果为2-1+0-1=0
倒数第5列:
    被借走了,结果为0-0=0
所以最终的结果为:001111

乘法:0×0=0,1×0=0,0×1=0,1×1=1
下图1011*101=110111
即:下面的那行数字从右到左,分别乘以上面的数字,并对其,乘出来的结果相加即可

 

除法: 0÷1=0,1÷1=1

二进制就是等于2时就要进位。
0=00000000
1=00000001
2=00000010
3=00000011
4=00000100
5=00000101
6=00000110
7=00000111
8=00001000
9=00001001
10=00001010
11=00001011 
...

进制转换
十进制二进制相互转换(10进制即正常使用的数字)

60 转二进制 111100 计算如下

二进制转十进制:
  
        

 二进制和八进制的转换
下图是二进制数与八进制数之间的对应关系表

八进制转二进制(取三合一),111100 的八进制为 74
注意,在向左(或向右)取三位时,取到最高位(最低位)如果无法凑足三位,就可以在小数点的最左边(或最右边)补0,进行换算,如图二

八进制转二进制(取一补三)
 

二进制和十六进制的转换同二进制八进制的转换一样,不过是(取四合一)

注意:二进制转16进制的时候:当二进制的计算计算结果大于等于10(十进制)的时候 ,就要用字母a-f表示,

二进制 二进制转十进制 结果
1010 8+0+2+0 = 10 a
1011 8+0+2+1 = 11 b
1100 8+4+0+0 = 12 c
1101 8+4+0+1 = 13 d
1110 8+4+2+0 = 14 e
1111 8+4+2+1 = 15 f

拓展

1.进制之间的常用转换方法:
多进制转十进制:parseInt(转换,几进制) ;
2转10: parseInt(111100,2); // 60
8转10: parseInt(74,8);  // 60
16转10: parseInt('6abc3a',16);  // 6995002    === >  #6abc3a 色值

十进制转2进制,8进制,16进制使用(number).toString(进制)
(60).toString(2); // 111100
(60).toString(8); // 74
(60).toString(16); // 3c
(6995002).toString(16); // 6abc3a

简写
二进制,以0b,比如 0b111100 => 60;
八进制,以0开头。比如60 => 074; //  parseInt('74',8) => 60
十进制就正常写法,比如60 => 60;
十六进制,以0x开头。比如60 => 0x3c; // parseInt('3c',16) => 60
在console中看下:

猜你喜欢

转载自blog.csdn.net/l284969634/article/details/104774044