永发信息网

C语言位操作问题

答案:1  悬赏:30  手机版
解决时间 2021-02-05 15:55
只可以用! ~ & ^ | + << >>这些位操作符,不可以用if等语句 进行这几个小问题的编译

1.byteSwap(int x, int y, int z)
Examples: byteSwap(0x12345678, 1, 3) = 0x56341278

byteSwap(0xDEADBEEF, 0, 2) = 0xDEEFBEAD
这个函数交换第m和第n个byte上的数字

2 logicalShitf(int x,int y)

.Examples: logicalShift(0x87654321,4) = 0x08765432
C中位移运算貌似是算术位移,这里要求进行逻辑位移

3.unsigned float_neg(unsigned uf)
求float数的负数 这道题可以用逻辑判断和if while
最佳答案
函数原型必须做修改.
另外
!

+
并不是位操作符,确定可以使用么?

数组可以用宏来替换掉就是了,反正只有4个。
如果不能用宏,你可以自己手动把宏展开写入代码中

#include

#define tab(x) (\\
x = x | (~((!(x^1))-1))&(8<<16),\\
x = x | (~((!(x^2))-1))&(16<<16),\\
x = x | (~((!(x^3))-1))&(24<<16),\\
x>>16)

int byteSwap(int x, int y, int z)
{
const long mask = 0xFF;
int ty = tab(y);
int tz = tab(z);
int yy = ( x >> ty ) & mask;
int zz = ( x >> tz ) & mask;
int tmp = ty;
tmp = tz;
tmp = ty;
tmp = tz;
x = x & ~( mask << ty ) | ( zz << ty );
x = x & ~( mask << tz ) | ( yy << tz );
return x;
}

int logicalShift(int x,int y)
{
return (int)(((unsigned)x)>>y);
}

float float_neg(float uf)
{
*((int*)&uf) = *((int*)&uf) ^ 0x80000000;
return uf;
}

void main ( void )
{
printf ( "%08X\
", byteSwap(0x12345678,1,3) );
printf ( "%08X\
", byteSwap(0xDEADBEEF,0,2) );
printf ( "%08X\
", logicalShift(0x87654321,4) );
printf ( "%f\
", float_neg(1.24f) );
printf ( "%f\
", float_neg(-6.489f) );
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
东兰县农村信用合作联社营业部地址在哪,我要
宾馆监控录像如何获取
交警要在多少天后会出交通事故责任认定书
俊丝形象设计地址有知道的么?有点事想过去
形容灯具的词语
现在开心果多少钱一斤?
女方的意思是什么啊?知道的请说下!
Excel 动态图标如何在坐标轴上插入动态标准值
18岁男生为什么吃过
小孩经常喝紫菜蛋花汤好吗
音频信号采样频率为44.1KHZ,量化精度16位,
看名字测性格
有一部电影男女主角有娃娃亲不过女主角在读高
松溪河大桥/S317(路口)这个地址在什么地方,
【数学小报四年级】小学四年级做手抄报数学趣
推荐资讯
虹桥街/S327(路口)地址有知道的么?有点事想
求最新赫海文
挑兵的意思是什么啊?知道的请说下!
邦纳福干洗地址在什么地方,想过去办事
什么颜色是黑胡桃色
湖北东方汇锦纺织服饰有限公司怎么去啊,有知
【热污染】热污染和放射性污染属于化学性污染
湖北医药学院堰桥医院火车站诊所怎么去啊,有
家里挂桃木剑好不好
利州区工业集中区大石工业园地址在哪,我要去
弱守的意思是什么啊?知道的请说下!
鑫源宾馆这个地址在什么地方,我要处理点事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?