进制转换[详解] 您所在的位置:网站首页 221的二进制是多少 进制转换[详解]

进制转换[详解]

2023-03-23 19:53| 来源: 网络整理| 查看: 265

十进制与其他进制(二进制、八进制、十六进制等)的转换,其中重点是十进制与二进制之间互转。下面讲解十进制与二进制之间如何互换,"其他进制和十进制互转"原理同"二进制和十进制互转"

再这是只是简单记怎么转换,更底层的原理不讲

1、十进制转二进制

两种方法:第一种方法叫除进制数取余数,逆序输出法;第二种方法叫凑数法(方法一二的叫法仅仅是我自己这么称呼的)

1.1、演示第一种方法

十进制转二进制,所以这里是除2取余数,再逆序输出。具体是十进制的数除以你所要转换的进制数,把每次除得的余数记在旁边,所得的商数继续除以进制数,直到商为0时止

100转换为二进制 100/2=50....(余数为0) 50/2=25.....(余数为0) 25/2=12.....(余数为1) 12/2=6......(余数为0) 6/2=3.......(余数为0) 3/2=1.......(余数为1) 1/2=0.......(余数为1)

所以十进制的100用二进制表示就是0110 0100         (注:为了方便查看都是用一个字节表示)

同理十进制转其他进制,如

100转换成八进制形式 100/8=12...(余数为4) 12/8=1.....(余数为4) 1/8=0......(余数为1)

得出144,此即为十进制100在八进制下的表示形式 

再看一个,144转为8进制 144/8=18..0 18/8=2..2 2/8=0..2

所以是220 

再看100转换为十六进制

100/16=6....(余数为4) 6/16=0......(余数为6)

所以以十六进制表示的100为64

1.2、第二种方法

凑数就是知道二进制每一位的值多大

同样1字节演示 0 0 0 0 0 0 0 0 2^7=128 2^6=64 2^5=32 2^4=16 2^3=8 2^2=4 2^1=2 2^0=1 简记 0 0 0 0 0 0 0 0 128 64 32 16 8 4 2 1

所以十进制的150就是

0 0 0 0 0 0 0 0 128 64 32 16 8 4 2 1 1 0 0 1 0 1 1 0 128 64 32 16 8 4 2 1 128+16+4+2=150 所以二进制就是1001 0110

十进制转二进制就基本会了,下面再强调几点

1、计算机永远存储的都是二进制的补码形式且你十进制转为二进制是转为了二进制的补码形式

2、正数的原码、反码、补码是一致的,不用考虑原反补之间要不要转换;负数则原码转反码是符号位不变,其余位取反、反码再转补码是末尾加1

2、二进制转十进制 

前面说了十进制转二进制是转的补码形式,可是二进制转十进制要求二进制是原码形式

以前面的十进制150转二进制为例,继续看怎么转十进制

 150转二进制得到1001 0110(完整的是0000 0000 0000 0000 0000 0000 1001 0110,因为是int类型是4字节;再强转为byte类型,所以二进制是1001 0110)

1001 0110 是负数,所以需要转反再转原 步骤和原转反转补是相反的,所以 先-1,得到 1001 0101 (-1觉得有难度可以想一下+1怎么加成0110的) 再符号位不变,其余位取反 1110 1010

所以得到的十进制是负的64+32+8+2=-106 

再看

byte bt=(byte)300; System.out.println(bt); 44

同理:先写出300的二进制: 省略23个0,再跟1 0010 1100 ,由于300超出byte范围,所以强转后只剩下一个字节变为0010 1100,再正数原反补一致所以直接转十进制,得到结果是44

3、补充

十进制的负数、小数怎么转二进制呢

3.1、先看十进制的小数

我们知道整数部分是除进制数取余数逆序输出法,而小数部分是乘进制数取商法。同样十进制转二进制为例,用十进制的小数部分乘以 2,然后取结果的整数部分,再用剩下的小数重复刚才的步骤直到最后剩余的小数为 0 时停止。最后将每次得到的整数部分按照先后顺序正序排列,从而得到对应的二进制表示

如十进制的0.25

0.25 *2=0.5 取0 0.5 *2=1.0 取1

所以十进制的0.25转为二进制是0.01

换用凑数法也行

8 4 2 1 0.5 0.25 所以0.25就是 0000.01

3.2、再看十进制的负数

负数的原码=将正数的原码符号位(最高位)改为1

负数的反码=符号位不变,其他位取反

负数的补码=负数的反码+1

所以求负数转二进制先求正数的二进制,求出后正数原反补一致,所以改符号位为1就是负数的二进制了。注意此时是二进制的原码形式,之后参与运算是需要负数的原码转反码再转补码的

如-24求二进制表示是

我们可以计算出正数24的原码是0001 1000(反码、补码也是这个) 所以-24对应的原码就出来了,直接将0001 1000的最高位改成1就行了,即-24的原码是1001 1000 于是再求出-24的反码(最高位不变,其余位全部取反)就是1110 0111 再求-24的补码是(反码+1) 1110 1000

有其他转换问题会再补充;再这一篇纯记录转换方法,原理不做研究 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有