Python学习笔记3-整数反转

题目:

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123

输出: 321

示例 2:

输入: -123

输出: -321

示例 3:

输入: 120

输出: 21

注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2 ^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

分析:

我们可以一次构建反转整数的一位数字。在这样做的时候,我们可以预先检查向原整数附加另一位数字是否会导致溢出。

反转整数的方法可以与反转字符串进行类比。

重复“弹出” x 的最后一位数字,并将它“推入”到 res 的后面。最后,res 将与 x 相反。

代码:

python求整数部分的位数 python求一个整数的位数_Python

代码分析:

abs()函数的作用是取绝对值,limit的作用是存储界限,实现反转的代码是:

r=r*10+y%10

Python运算符介绍:

(a & b)

按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0

输出结果 12 ,二进制解释: 0000 1100

(a | b)

按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。

输出结果 61 ,二进制解释: 0011 1101

(a ^ b)

按位异或运算符:当两对应的二进位相异时,结果为1

输出结果 49 ,二进制解释: 0011 0001

(~a )

按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1

输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。

a << 2

左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。

输出结果 240 ,二进制解释: 1111 0000

a >> 2

右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数

输出结果 15 ,二进制解释: 0000 1111

python赋值运算符:

*=乘法赋值运算符c *= a 等效于 c = c * a

/=除法赋值运算符c /= a 等效于 c = c / a

%=取模赋值运算符c %= a 等效于 c = c % a

**=幂赋值运算符c **= a 等效于 c = c ** a

//=取整除赋值运算符c //= a 等效于 c = c // a

运行结果:

python求整数部分的位数 python求一个整数的位数_Python_02

python求整数部分的位数 python求一个整数的位数_python反转一个三位数的整数_03