#include stdio.h
創(chuàng)新互聯(lián)建站專注于托克托企業(yè)網站建設,響應式網站開發(fā),電子商務商城網站建設。托克托網站建設公司,為托克托等地區(qū)提供建站服務。全流程按需規(guī)劃網站,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務
void fun(int value,int n,int dire)
{
if(dire==0) return;
int x=1(sizeof(int)*8-1);
int temp;
int i;
if(dire0)
{
for(i=0;in;i++)
{
temp=value1;
value=1;
if(temp) value|=x;
}
}
else
{
for(i=0;in;i++)
{
temp=value x;
value=1;
if(temp) value|=1;
}
}
}
void main()
{
int x=0x55555555;
fun(x,1,1);
printf("%x",x);
}
因為是按8進制輸入的,8進制的24換成10進制就是20,換成2進制就是00010100(以1字節(jié)表示)。而00010100循環(huán)右移2位后就是00000101,即10進制的5,而5按8進制輸出(輸出格式為%o),就是5。
00010100循環(huán)左移2位后是01010000,用10進制表示就是80,而80按8進制輸出(輸出格式為%o),就是120。
循環(huán)右移 就是
_cror_
和這個類似的。
你這個是單片機里面的吧
除了單片機,很少有這么用的。
#include?stdio.h
#include?math.h
unsigned?fun(unsigned?num,?int?n)
{
if(n??0)
{
//sizeof(unsigned)*8計算變量所占位數(shù),如int型占32位
return?(num??(sizeof(unsigned)*8?-?n))?|?(num??n);?//先高位移動,再低位移動后,兩者按位或,相當把低位溢出的又添加到了高位,實現(xiàn)了循環(huán)的效果?
}?
else?
{
return?(num??(sizeof(unsigned)*8?-?abs(n)))?|?(num??abs(n));
}
}
void?main(void)?
{
printf("%u\n",?fun(2,?-34));
}