进制之间的转换

  • Post author:
  • Post category:其他




十进制转换任意进制


给目标数除以进制数,除到商为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



版权声明:本文为qq_44035889原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。