在C中你做这样的事情:
char var = 1;
while(1)
{
var = var << 1;
}
Run Code Online (Sandbox Code Playgroud)
在第8次迭代中,"<<"运算符将移出1并且var将为0.我需要执行移位以保持位移位.换句话说,我需要这个:
首字母----- 00000001
第一班 - 00000010
第二班 - 00000100
第3班 - 00001000
第四班 - 00010000
第五班 - 00100000
第6班 - 01000000
第7班 - 10000000
第8班 - 00000001(第8班,自动重启)
有没有相当于"<<"的东西,但实现这一点?
这称为循环移位,但C在语言级别不提供此功能.
您要么必须自己实现,要么采用内联汇编程序例程,假设您的平台本身具有此类指令.
例如:
var = (var << 1) | (var >> 7);
Run Code Online (Sandbox Code Playgroud)
(signed但是,对于负面类型,这没有明确定义,因此您必须将示例更改为unsigned char.)