二进制转十进制
(1)整数
从右到左,乘以2的递增次方。
(2)小数
从左到右,乘以2的递减负次方。
十进制转二进制
(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