一文搞懂进制转换以及位运算

本文详细介绍了二进制、八进制、十进制和十六进制之间的转换规则,包括整数和小数的转换。同时,对位运算如按位与、按位或、异或、取反、左移、右移和无符号右移进行了深入解析,给出了具体的操作规则和应用场景。无论是正整数、负整数还是小数,转换过程都有清晰的步骤和示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1进制

1.1 进制之间的相互转换

1.1.1 二进制转为八进制、十进制、十六进制

1.1.1.1 二进制转为八进制

根据十进制负数转八进制过程可知,二进制转八进制遵循的规则为取三合一,位数不够左补0,如有疑问,请看十进制负数转八进制详情。

1.1.1.2 二进制转为十进制

口诀:整数(正整数、负整数)二进制用数值乘以2的幂次依次相加、小数二进制用数值乘以负幂次然后依次相加

1.1.1.2.1 整数

口诀:位数补齐看首位,首位为0为正,首位为1为负。

1.1.1.2.1.1 正整数

如下图:
在这里插入图片描述

1.1.1.2.1.2 负整数

如下图:
在这里插入图片描述

1.1.1.2.2 小数

如下图:
在这里插入图片描述

1.1.1.3 二进制转为十六进制

根据十进制负数转十六进制过程可知,二进制转十六进制遵循的规则为取四合一,位数不够左补0,如有疑问,请看十进制负数转十六进制详情。

1.1.2 八进制转为二进制、十进制、十六进制

1.1.2.1 八进制转二进制

口诀:一分三,可求出八进制转二进制
如图:
在这里插入图片描述

1.1.2.2 八进制转十进制
1.1.2.2.1 小数

如下图:
在这里插入图片描述

1.1.2.2.2 正整数

如下图:
在这里插入图片描述

1.1.2.3 八进制转十六进制

八进制转为十六进制有两种方式,

  • 先将八进制转为二进制,在将二进制转为十六进制
  • 先将八进制转为十进制,在将二进制转为十六进制
    相关方式查看其他对应的转换规则。

1.1.3 十进制转为二进制、八进制、十六进制

1.1.3.1 十进制小数

十进制小数转二进制、八进制、十进制使用按乘进制数取整的方式,如下

1.1.3.1.1 十进制转二进制

小数转换不一定能算尽,只能算到一定精度 的位数为止,故会产生一定误差,当然位数越多,误差越小。
在这里插入图片描述

1.1.3.1.2 十进制转八进制

小数转换不一定能算尽,只能算到一定精度 的位数为止,故会产生一定误差,当然位数越多,误差越小。
在这里插入图片描述

1.1.3.1.3 十进制转十六进制

小数转换不一定能算尽,只能算到一定精度 的位数为止,故会产生一定误差,当然位数越多,误差越小。
在这里插入图片描述

1.1.3.2 十进制整数

十进制整数转二进制、八进制、十进制使用的是除进制数取余的方式,如下

1.1.3.2.1 十进制转二进制

二进制为逢二进一
在这里插入图片描述

1.1.3.2.2 十进制转八进制

八进制为:1、2、3、4、5、6、7,逢八进一
在这里插入图片描述

1.1.3.2.3 十进制转十六进制

十六进制为:1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,逢十六进一
在这里插入图片描述

1.1.3.3 十进制负数

负数转二进制、八进制或者十六进制涉及到三个概念

  • 原码:原码就是取负数的绝对值得二进制数,并且最高位为符号位,负数的最高位为1
  • 反码:反码就是在原码的基础上进行取反操作,也就是位数为1变为0,位数为0变为1,符号位不变.
  • 补码:补码就是在反码的基础上+1就得到了这个数的补码。
1.1.3.3.1 十进制转二进制

如下图:
在这里插入图片描述

1.1.3.3.2 十进制转八进制

如下图:
在这里插入图片描述

1.1.3.3.3 十进制转十六进制

如下图:
在这里插入图片描述

1.1.4 十六进制转为二进制、八进制、十进制

1.1.4.1 十六进制转为二进制

口诀:一分四得二进制
如下图:
在这里插入图片描述

1.1.4.2 十六进制转为八进制

十六进制转为八进制有两种方式

  • 先将十六进制转为二进制,在将二进制转为八进制。
  • 先将十六进制转为十进制,在将十进制转为八进制。
    具体的转换过程查看对应的转换逻辑。
1.1.4.3 十六进制转为十进制

如下图:
在这里插入图片描述

1.2 位运算

1.2.1 按位与 &

1.2.1.1 规则

两个相应的二进制位中都为1,该位的结果值为1

1.2.1.2 示例
//对应布尔代数的与
	101010
&	110011
=	100010
1.2.1.3 场景
  • 判断奇偶性
    if(n & 1 == 1){   //(n&1 == 0)//n是偶数
        //n是奇数
    }
    
  • 清零(将一个单元与0进行位与运算结果为零)

1.2.2 按位或 |

1.2.2.1 规则

两个相应的二进制位中只要有一个为1,那么值就是1。

1.2.2.2 示例
//对应布尔代数的或
	101010
|	110011
=	111011

1.2.3 异或 ^

1.2.3.1 规则

两个相应的二进制位值不同,则为1,否则为0。例:

1.2.3.2 示例
	101010
^	110011
=	011001
1.2.3.3 场景
  • 异或可以用在对两个数进行交换的情况中
    a = a^b
    b = a^b
    a = a^b
    

1.2.4 取反运算 ~

1.2.4.1 规则

用来对一个二进制数按位取反,将0变成1,1变成0。

1.2.4.2 示例
//对应布尔代数的非
~  00110000
=  11001111
1.2.4.3 场景
  • 求相反数: ~a + 1

1.2.5 左移 <<

1.2.5.1 规则

m<<n,把m的二进制数左移n位,高位超出n位都舍弃,低位补0

1.2.5.2 示例
 5<<2 =20
1.2.5.3 场景
  • m < < n = m ∗ 2 n m<<n = m*2^n m<<n=m2n

1.2.6 右移 >>

1.2.6.1 规则

m>>n,把m的二进制数右移n位,m为正数,高位全部补0,m为负数,高位全部补1。

1.2.6.2 示例
5>>2 =1
1.2.6.3 场景
  • m > > n = m / 2 n m>>n = m/2^n m>>n=m/2n

1.2.7 无符号右移 >>>

1.2.7.1 规则

m>>>n,整数m表示的二进制右移n位,不论正负数,高位都补0

1.2.7.2 示例
15>>>2 =3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值