📅  最后修改于: 2023-12-03 15:09:52.130000             🧑  作者: Mango
循环数(Circular Number)是指一个数在特定进制下每个数位上的数字与它向右旋转后所得到的数位排列完全相同的数。例如,197是一个以十进制表示的循环数,因为它的每个数位上的数字与向右旋转之后的数字排列完全相同,旋转后得到的数字是971和719。
在计算机编程中,循环数的概念也经常被使用。在以下的介绍中,我们主要讨论数字的循环移位运算和如何判断一个数是否是循环数。
循环移位运算是指将一个二进制数的所有位向左或向右移动n位,并将超过最高位或最低位的位移动到最低位或最高位的一种运算,它主要分为循环左移和循环右移两种方式。
循环左移是指将一个数的所有位向左移动n位,并将超过最高位的n个位移动到最低位上的一种运算。循环左移运算可以使用左移运算符和按位或运算符来实现。下面是C语言实现循环左移的代码:
unsigned int rotate_left(unsigned int x, int n) {
return (x<<n) | (x>>(sizeof(int)*8-n));
}
循环右移是指将一个数的所有位向右移动n位,并将低于最低位的n个位移动到最高位上的一种运算。循环右移运算可以使用右移运算符和按位或运算符来实现。下面是C语言实现循环右移的代码:
unsigned int rotate_right(unsigned int x, int n) {
return (x>>n) | (x<<(sizeof(int)*8-n));
}
如何判断一个数是否是循环数呢?以下是基于给定进制的判断循环数的通用方法:
以下是一个Python的实现:
def is_circular_number(n, base=10):
s = str(n)
l = len(s)
for i in range(l):
n = (n // base) + ((n % base) * (base ** (l-1)))
if n == m:
return True
return False
循环数在计算机编程中经常被使用,它的特点是对于在一个特定进制下,它的每个数位上的数字与向右旋转之后的数字排列完全相同。我们介绍了循环移位运算的两种方式,以及如何判断一个数是否是循环数。