在这里插入图片描述
在这里插入图片描述


💻前言

🍁学习计算机相关知识的过程中,我们常用到一些运算基础,这里总结二进制、八进制、十进制、十六进制之间的转换,还有正负数原码、反码、补码的转换!


💻目录

一.数制间的转换
——1.非十进制数转化为十进制数字
——2.十进制数转化为非十进制数
——3.二进制与八进制、十六进制的转换
二.原码、反码、和补码的转换
——1.正数的原反补
——2.负数的原反补


💻一.数制间的转换

二进制:只有0和1组成

八进制:开头一个0,后面0~7随便组

十进制:开头不为0,后面0~9随便组

十六进制:0x 或0X开头,后面0-9 和A-F随便组

1.非十进制数转化为十进制数字

非十进制数转换为十进制数采用按权位展开再求和的方法!

举例:

  • 二进制数10001101.11转换为十进制数
    (10001101.11)2
    =1* 2^7 + 0 *2^6 + 0 *2^5 + 0 * 2 ^4 +1 * 2 ^3 + 1 * 2 ^2 + 0 * 2 ^1 + 1 * 2 ^0 + 1 * 2 ^-1 + 1 * 2 ^-1
    = 141.75

  • 八进制数337.4转换为十进制数
    (337.4)8
    =3 * 8^2 + 3 * 8^1 + 7 * 8^0 + 4 * 8^-1
    =223.5

  • 十六进制数3BF.4转换为十进制数
    在十六进制数转换为时,要将符号A B C D E F还原成10 11 12 13 14 15 进行运算!
    (3BF.4)16
    =3 * 16^2 + 11 * 16^1 + 15 * 16^0 + 4 * 16^-1
    =959.25

2.十进制数转化为非十进制数

将十进制数转化为二进制、八进制或十六进制数等非十进制数的方法时类似的,其步骤是将十进制数转换分整数和小数俩部分进行。

(1)十进制整数转化为非十进制整数。采用“除基取余数法”,即将十进制整数逐次除以转换目标数制的基数,直到商为0为止,将所得余数除自下向上排列即可。

举例:

  • 十进制35转换为二进制、八进制、十六进制
    在这里插入图片描述
    所以,35 = (100011)2
    在这里插入图片描述
    所以,35 = (43)8
    在这里插入图片描述
    所以,35 = (23)16

(2)十进制小数转化为非十进制小数。采用“乘基取整法”,即将十进制小数逐次乘以以转换目标数制的基数,直到小数部分的值为0或满足精度要求为止,然后将得到的整数自上而下排列。

举例:

  • 将十进制数0.25转换成二进制数

在这里插入图片描述所以0.25 = (0.01)2

当十进制小数不能用有限二进制小数精确表示时,根据精度要求,采用“0舍1入”法,取有限二进制小数近似表示。

举例:

  • 将十进制数0.32转换成二进制数(要求精确到小数点后4位)

在这里插入图片描述所以:0.32 约等于 (0.0101)2

若十进制数中既有整数,又有小数,则因该将整数部分和小数部分分别进行转换,再将俩者相加,便得到结果。

举例:

  • 将十进制数35.32转换成二进制数
    上面得出
    35 = (100011)2
    0.25 = (0.01)2
    所以,35.25 = (10010.01)2

3.二进制与八进制、十六进制的转换

1位八进制数对应3位二进制数,而1位十六进制数对应4位二进制数。

二进制转换为八进制的原则是:整数部分从低位到高位每3位为一组(不足三位高位用0补足)小数部分从高位到低位每三位为一组(不足三位低位用0补足),然后将每组3位二进制数转换成1位八进制数。一组一组的转换成对应的八进制数,即得到转换的结果!

举例:

  • 将二进制数10011110.00111转换为八进制数
    在这里插入图片描述
    所以,(10011110.00111)2 = (236.16)8

反之,由八进制数转换成二进制数时,只要将每位八进制数转换成对应的3位二进制数即可。

举例:

  • 将八进制数261.34转换为二进制数
    在这里插入图片描述
    所以,(261.34)8 = (10110001.0111)2

类似的十六进制转换为二进制数时,只要将每位十六进制数转换成对应的4位二进制数表示。

举例:

  • 将二进制数10011110.00111转换成十六进制数,十六进制数5A.E8转换为二进制数。

在这里插入图片描述所以,(10011110.00111)2 = (9E.38)16

在这里插入图片描述
所以,(5A.E8)16 = (1011010.11101)2


💻二.原码、反码、和补码的转换

要知道在计算机当中数据是以二进制补码的形式存储的,一个数写成它所对应成二进制序列便是这个数的原码,以整形数据为例,一个int整形数据在内存中占4字节(32比特位),对应32位二进制数。

二进制序列的首位为符号位,为0表示正数,为1表示负数。

1.正数的原反补

直接按照正负数的形式翻译成二进制就可以。
比如1二进制序列,也就是原码
在这里插入图片描述

正数的反码和补码与原码是相同的

2.负数的原反补

以 -1 为例

-1 的原码如下:
直接按照正负数的形式翻译成二进制就可以。
在这里插入图片描述

求负数的反码,将原码的符号位不变,其他位依次按位取反就可以得到了。
-1的反码:
在这里插入图片描述
负数的补码是在反码的基础上加1得到:
在这里插入图片描述
根据补码求反码及原码倒推回去即可,也就是补码减一得到反码,再将反码符号位不变,其他位按位取反得到原码!

这里再介绍另一种根据补码求原码的方法,补码的符号位不变,其他位按位取反,然后在此基础上再加一便求出了原码。


💻结语

各位小伙伴,看到这里就是缘分嘛,希望我的这些内容可以给你带来那么一丝丝帮助,可以的话三连支持一下呗(关注✌️点赞✌️评论✌️)!!!
感谢每一位走到这里的小伙伴,我们可以一起学习交流,一起进步!!!加油!!!

在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐