📜  程序来切换数字N的第K位(1)

📅  最后修改于: 2023-12-03 14:56:36.472000             🧑  作者: Mango

程序来切换数字 N 的第 K 位

在编程过程中,有时候需要操作二进制或十进制数字的某一位。本文将介绍如何通过程序来切换数字 N 的第 K 位。

二进制下的实现

在二进制下,可以通过位运算实现,具体步骤如下:

  1. 将数字 N 和一个二进制数 1 左移 K - 1 位的结果进行按位与运算,得到 N 的二进制表示下第 K 位的值;
  2. 如果第 K 位的值为 1,将其改为 0;如果第 K 位的值为 0,将其改为 1。

以下是 Python 代码片段:

def toggle_bit(n: int, k: int) -> int:
    # Step 1
    mask = 1 << (k - 1)
    bit = n & mask

    # Step 2
    if bit:
        n &= ~mask
    else:
        n |= mask

    return n

以上代码中,n 为原始数字,k 为需要切换的位数。函数 toggle_bit 返回修改后的数字。

十进制下的实现

在十进制下,可以先将数字 N 转换成字符串,再将字符串的第 K 个字符(从右往左数)的数字取出,然后将其改变,再将字符串转换成数字。

以下是 Python 代码片段:

def toggle_digit(n: int, k: int) -> int:
    str_n = str(n)
    digit = int(str_n[-k])

    if digit == 9:
        new_digit = 0
    else:
        new_digit = digit + 1

    new_str_n = str_n[:-k] + str(new_digit) + str_n[-k + 1:]
    return int(new_str_n)

以上代码中,n 为原始数字,k 为需要切换的位数。函数 toggle_digit 返回修改后的数字。

以上就是通过程序来切换数字 N 的第 K 位的方法,在实际编程中可以根据需要进行调整和优化。