X位的有/无符号整数

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

原文地址:https://www.cnblogs.com/lucky75/p/10901854.html