十进制转换任意进制
给目标数除以进制数,除到商为0时,余数颠倒.
例如:
18转二进制==0b10010;(给18除以2,除到商为0为止,将每一步的余数颠倒就得到了10010)
任意进制转十进制:
给数字从右至左编号,每个位数乘以进制数的编号次方,所得结果之和,即为要求的进制数.
例如:0b1010101=85
6543210
1×2
6+0×2
5+1×2
4+0×2
3+1×2
2+0×2
1+1×2^0=85
任意进制之间的转换
①以二进制位桥梁,利用8421码
1、将每个二进制对应的位商计算一个固定的十进制数
1111
3210
1×2
3+1×2
2+1×2
1+1×2
0=8+4+2+1(8421码)
2 将每个进制对应的分组
①二进制2位数组合
②八进制3位数组合
④十六进制4位数组合
例如:①将0b1011101转换为8进制
0b1011101
001 011 101
001 021 401
1 3 5=135
②将0b1011101转换为16进制
0101 1101
0401 8401
5 13=5D
②以十进制为桥梁
x进制=十进制 =>y进制
四、十进制负整数转二进制算法
1、将十进制输出转化陈二进制数,先不管符号;
2、对转化的二进制数逐位取反
3、对取反后的二进制数加1,结果就是十进制负数转化成的二进制数
例如:将-122转化成2进制数
①先把122转换成二进制(因为计算机中存储的是64bit的大小,所以要向前补0)
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0111 1010
②对二进制逐位取反:
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1000 0101
③取反后加1:
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1000 0110
五、整数的储存
整数在计算机中是以补码的方式存储的,
1、原码
将一个整数转换成二进制,然后 最高位用来表示符号位(0表示正数,1表示负数,其余位表示数值位)
2、反码
正数的反码和原码一致,负数的反码全部取反,除最高位补码
3、补码
正数的补码和原码一致,负数的补码在反码的基础上末尾+1