这是什么意思:256和%256有什么用,地址如何分为高位和低位?

2024-09-27 23:16:36 发布

您现在位置:Python中文网/ 问答频道 /正文

这是来自lib_robotis的代码片段,值n是我们输入的角度(旋转dimexel马达)。在

根据马达内部芯片的结构,我们需要将目标位置的低位(由lo标识)放入地址0x1e,将目标位置的高位(由hi标识)赋给地址0x1f

def move_to_encoder(self,n);
    n=min(max(n,0),self.settings['max_encoder'])
    hi,lo=n/256, n%256
    return self.write_address(0x1e, [hi,lo])

Tags: 代码selflo目标encoder地址libhi
3条回答

把位想象成二进制表示法中的“数字”。如果你需要取256的最右边的两位数,你只需写256%100,其中100是10^2。同样地,要取8个最右边的“二进制数字”,也就是位,你必须将这个数字除以2^8,即256。在

首先,你说的是高/低字节,而不是。在

除以256等于右移8次,所以基本上得到高字节。将余数除以256(通过模运算符“%”)可以有效地提取低位字节,因为根据定义,结果将是<;256。在

n是0<;=n<;256*256范围内的数字。它需要两个字节来表示这个数字,因为一个字节可以编码0到255之间的值。在

hi,lo=n/256, n%256

hi = n / 256
lo = n % 256

/是除法运算符,%是余数运算符,因此上面的代码要求将n除以256,并将商存储在hi中,余数存储在lo中。hi和{}中的每一个都在0到255的范围内,因此它们将各自放入一个字节中。n==(256*hi)+lo,因此没有信息丢失,电机控制器拥有执行所需操作所需的所有信息。在

我假设您帖子中的代码是为Python2编写的;它在Python3上无法正常工作。您应该将n / 256替换为n // 256,以使代码可以在所有版本的Python上运行。在

FWIW,有各种更好的方法来将一个数字分成高字节和低字节。使用内置的divmod函数:

hi, lo = divmod(n, 256)

相关问题 更多 >

    热门问题