将整数数组向左移动 `n` 位
Shift an integer array to the left by `n` bits
看来 shift/rotate 一个 n
位的数组应该很简单。
但是,我使用的编程语言 (Solidity) 没有任何这样的运算符(即没有移位或旋转运算符)...
我有一个无符号的 256 位整数(Solidity 类型 uint256
)。
我想知道我是否可以以某种方式进行移位或旋转操作"manually"?
我的意思是,执行一些系列的乘法 (*
)、mod (%
) 或类似的操作来给出所需的移位和旋转?我知道这可能非常低效,但我只需要每小时执行一次或两次此操作,因此在我的用例中并不重要。
如果没有 shift 函数,那么您可能需要执行一系列 *2 或稍微好一点的操作:
val*[2^(班次数)]
看来 shift/rotate 一个 n
位的数组应该很简单。
但是,我使用的编程语言 (Solidity) 没有任何这样的运算符(即没有移位或旋转运算符)...
我有一个无符号的 256 位整数(Solidity 类型 uint256
)。
我想知道我是否可以以某种方式进行移位或旋转操作"manually"?
我的意思是,执行一些系列的乘法 (*
)、mod (%
) 或类似的操作来给出所需的移位和旋转?我知道这可能非常低效,但我只需要每小时执行一次或两次此操作,因此在我的用例中并不重要。
如果没有 shift 函数,那么您可能需要执行一系列 *2 或稍微好一点的操作:
val*[2^(班次数)]