X位的有符号整数
-
以4位为例,不管多少位都是相同的概念
-
在有符号整数中,第一位二进制位用来表示符号,0为正,1为负
-
最大值当然是全部填满1,也就是
0111
,而最小值全部填满0,也就是1000
-
所以取值范围是
[-2**3, 2**3-1]
X位的无符号整数
-
如上,以以4位为例
-
没有符号的概念,最大值,把4位全填满1,也就是
1111
,最小值则是0000
-
所以取值范围是
[0, 2**4-1]
知识点来自leetcode整数翻转
- 题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
- 示例:输入
123
输出321
,输入-123
输出-321
,输入120
输出21,输入918739871939
输出0
- 还没有学到函数,所以代码未使用函数,若要放入leetcode中,将x的定义删除,print换成return即可
- 以下为代码解析
x = 1231312412
if x == 0: # 去除X等于0的情况
print(0)
x = str(x) # 将x转换成字符串
l = len(x)
if x[-1] == '0': # 如果最后一位数是0,把0切除
x = x[:l-1]
if '-' in x: # 如果是负数,切掉符号翻转后加回来
a = '-' + x[l:0:-1]
else: # 如果是正数,直接翻转
a = x[::-1]
a = int(a) # 把a变回整型
if -2 ** 31 > a or a > 2 ** 31 - 1: # 如果翻转后的值超出了32位有符号整数,a=0
a = 0
print(a)
2142131321