用位运算将十进制转为二进制python_用位运算实现十进制转换为二进制

代码如下:

1 #include //将十进制数转化为二进制数,位运算的取位操作

2 using namespacestd;3 intmain()4 {5 unsigned shorti;6 cout << "请输入一个小于65536的正整数" <>i;8 for(int j=15; j >= 0; j--)9 {10 if ( i & ( 1 << j) ) cout << "1";11 else cout << "0";12 }13 cout <

14

15     return 0;16 }

分析:

分析一下这个程序的算法原理,顺便复习一下位运算的奇妙吧。

这是一个将无符号十进制数转化为标准16位二进制数的程序。

程序的主体部分,for语句从15递减到0,一共16次对二进制数的每一位的判断作操作。循环体内部的条件判断用到了位运算中的&运算(与运算)和<

所以i&(1<

有的童鞋可能觉得用mod(取余)运算照样可以达到效果,但是位运算的“个性”就决定了它直接对数据的二进制形式进行操作的快捷性(一般计算机的数据存储基本形式为二进制形式),两个相同算法的程序,用了位运算后会使程序速度上有提高。

类似的 LeetCode 上的第一题 :

Number of 1 Bits

Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).

For exampl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下函数实现十进制数转换为二进制数: ```python def decimal_to_binary(decimal): binary = '' while decimal > : binary = str(decimal % 2) + binary decimal //= 2 return binary ``` 该函数的实现思路是:不断地将十进制数除以2,将余数加到二进制数的最前面,直到十进制数为为止。最后返回得到的二进制数。 例如,将十进制数13转换为二进制数,可以调用该函数: ```python binary = decimal_to_binary(13) print(binary) # 输出:1101 ``` 该函数的输出结果为字符串类型的二进制数。如果需要将其转换为整数类型,可以使用以下代码: ```python binary_int = int(binary, 2) print(binary_int) # 输出:13 ``` 其中,int()函数的第二个参数指定了进制数,这里是2表示二进制。 ### 回答2: 在计算机中,数字一般采用二进制表示,因此在某些情况下需要将十进制数转换为二进制数。我们可以编写一个函数来实现这个转换过程。 首先,需要了解二进制数的表示方法。二进制数由0和1组,每一位上的数值表示该位上的2的几次方。例如,二进制数1011表示: 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 11 转换过程可以采用除2取余法。具体步骤如下: 1. 将十进制数除以2,得到商和余数。余数为该数的最低位二进制数值。 2. 将商继续除以2,得到商和余数。余数为次低位二进制数值。 3. 重复以上过程,直到商为0。将余数按顺序排列,即可得到该数的二进制值。 下面是Python实现的代码: ```python def decimal_to_binary(num): binary = '' while num > 0: remainder = num % 2 binary = str(remainder) + binary num //= 2 return binary ``` 在该函数中,我们通过循环,反复进行除2取余的过程。每次取得余数后,将其添加到二进制字符串的最前面。最后,返回该字符串即可。 例如,我们要将十进制数25转换为二进制数,调用该函数如下: ```python decimal_to_binary(25) ``` 输出结果为:'11001' 这说明,25的二进制表示为11001。 综上所述,编写函数将十进制数转换为二进制数,可以通过除2取余的方法实现。对于更大的数字,该方法也同样适用,只需要不断地进行除2操作并记录余数即可。 ### 回答3: 将十进制数转换为二进制数是一个很基础的问题。在计算机中,二进制数是最常用的数值类型之一,因为在计算机内部所有的数据都是以二进制数的形式存储和处理的。因此,将十进制数转换为二进制数也是很重要的一项技能。 如果要编写函数来实现十进制数转换为二进制数,需要先了解一些基本的数值运算规则和转换方法。具体来说,我们可以使用以下步骤来完这个过程: 1. 将十进制数分解为二进制位:首先,我们可以将十进制数按照从高到低的顺序,依次除以2,并把余数记录下来。一直重复这个过程,直到商为0,这样我们就得到了一个二进制位序列。 2. 反转二进制位序列:接下来,我们需要把刚才得到的二进制位序列反转一下,因为它们是从低位到高位排列的,而我们需要的是从高位到低位的排列方式。 3. 连接二进制位序列:最后,我们需要把反转后的二进制位序列连接起来,得到一个完整的二进制数。 基于以上分析,我们可以编写出一个将十进制数转换为二进制数的函数代码。具体实现代码如下: ``` def decimal_to_binary(num): # 初始化变量 binary_list = [] quotient = num # 分解十进制数 while quotient != 0: remainder = quotient % 2 quotient = quotient // 2 binary_list.append(remainder) # 反转二进制位序列 binary_list.reverse() # 连接二进制位序列 binary_str = ''.join(str(i) for i in binary_list) # 返回结果 return binary_str ``` 这个函数接受一个十进制数作为输入,并返回一个字符串类型的二进制数。在函数内部,我们首先定义了一个列表和一个商变量来存储二进制数位和当前的商值。然后我们使用while循环来重复分解十进制数,并把余数添加到binary_list中。接下来,我们使用列表的reverse()方法来反转二进制位序列,并用join()方法连接二进制位序列。最后,我们返回二进制数字符串。 因此,在调用这个函数之后,我们可以得到输入十进制数的二进制表示。例如,输入decimal_to_binary(42),会返回结果'101010'。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值