二进制与十进制转换

二进制转十进制

(1)整数

从右到左,乘以2的递增次方。

(2)小数

从左到右,乘以2的递减负次方。

1101.01(2)=1*20+0*21+1*22+1*23 +0*2-1+1*2-2=1+0+4+8+0+0.25=13.25(10)

十进制转二进制

(1)整数

除2取余,从右到左,排列

789=1100010101(B)

789/2=394 余1 第10位
394/2=197 余0 第9位
197/2=98 余1 第8位
98/2=49 余0 第7位
49/2=24 余1 第6位
24/2=12 余0 第5位
12/2=6 余0 第4位
6/2=3 余0 第3位
3/2=1 余1 第2位
1/2=0 余1 第1位

(2)小数

乘2取整,从左到右,排列

0.7=(0.1 0110 0110…)B

0.7*2=1.4========取出整数部分1
0.4*2=0.8========取出整数部分0
0.8*2=1.6========取出整数部分1
0.6*2=1.2========取出整数部分1
0.2*2=0.4========取出整数部分0
0.4*2=0.8========取出整数部分0
0.8*2=1.6========取出整数部分1
0.6*2=1.2========取出整数部分1
0.2*2=0.4========取出整数部分0

注意:

将一个数左移N位相当于将一个数乘以2的N次方。

将一个数右移N位相当于将这个数除以2的N次方。

如:

12二进制1100,右移两位是二进制11,等于3

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

@Slf4j
public class test {
    @Test
    public void count() {
        int a = 12;
        log.info("值:"+String.valueOf(a >> 2));
        log.info("值:"+String.valueOf(a << 2));
    }
}
14:09:30.763 [main] INFO test - 值:3
14:09:30.769 [main] INFO test - 值:48

Guess you like

Origin blog.csdn.net/weixin_44371237/article/details/120132330