二进制
- 十进制 (减法 借一当10)
加法 : 9 + 1 = 10 ; 99 + 1 = 100; 满10加1 相同位数的值相加 满10 向前+1
减法 : 20 - 5 = 15 (个位数为0 , 不足以减5 ; 向十位数借1充当个位数的10(十进制),于是现在个位数为10 10-5 = 5; 个位数结果为5 ;十位数被借了1 于是 2 -1 = 1;结果为1 ;最终结果 15)
- 二进制 (减法 借一当2)
加法 : 101 + 11 = 1000; 1 + 1 = 10 满2加1 相同位数的值相加 满2 向前+1
减法 : 100010 - 1010 = 011000 (个位数都为0,十位数结果 1-1 = 0,百位数都为0,千位数为0不足以-1,向前借1当2,于是结果2-1 = 1,万位数为0,被借了1,不足以-1,向前借1,于是结果2-1 = 1;十万位被借了1,于是结果1-1=0;最终结果011000)
- 整数十进制转二进制
65 ----- > 1000001
计算 :(短除)
65 = 32 * 2 ---------------1
32 = 16 * 2 ---------------0
16 = 8 * 2 ---------------0
8 = 4 * 2 ---------------0
4 = 2 * 2 ---------------0
2 = 1 * 2 ---------------0
1 = 0 * 2 ---------------1
因为 :
2 = 10
4 = 100
8 = 1000
16 = 10000
32 = 100000
64 = 1000000
65 = 64 +1 = 1000000 + 1 = 1000001
- 小数转二进制
13.25 -------->1101.01
计算: 13.25 = 13 + 0.25; 13 转二进制结果为1101 ; 0.25转二进制 0.25 * 2 = 0.5 整数位结果0 0.5 * 2 = 1.0 整数位结果为1 最终结果 0.01;所以13.25转二进制结果为1101 + 0.01 = 1101.01;
- 原码,反码,补码
原码:一个数的绝对值得二进制 最高位为符号位 正数为0 负数为1 -13 ---> |-13|----> 1101 ----> 10001101 (8字节,向前补4个0,负数 最高位为1);
反码:正数的反码是其原码,负数的反码是其原码 的符号位不变,其余每个位取反 (0变为1,1变为0) 10001101 -----> 1 1110010;
补码:正数的补码是其原码,负数的补码是其原码 的反码 + 1;
- 为什么要补码?
计算机只能进行加法运算 ,减法会用补码的方式当成加法来算(结果是补码)
12 - 14 = 12 +(-14) = 00001100(12的原码) + 11110010(14的补码) = 11111110(结果的补码) --->11111101(-1)---> 10000010(结果的原码:符号位不变,其他位取反) ----> -2 (十进制)
- 二进制运算符
& (与):相同位上有0则结果为0
| (或):相同位上有1则结果为1
! (非):按位取反 1变0 0变1
^ (异或):相同位上不同为1,相同为0
- 16进制(常用)
范围 : 0~9 A~F(10~15)
满16进一 0x前缀表示16进制
2进制转16进制 4位二进制合成一个位的16进制 2^4 = 16 案例 100100 = 0010 0100 = 0x24
16进制转2进制 1位16进制分成4个位的二进制 2^4 = 16 案例 0xFD = 1111 1101 = 11111101
- 8进制
范围 : 0~7
满8进1
2进制转8进制 3位二进制合成一个位的8进制 2^3 = 8 案例 100100 = 100 100 = 44
8进制转2进制 1位8进制分成3个位的二进制 2^3 = 8 案例 76 = 111 110 = 111110

浙公网安备 33010602011771号