查看: 3059|回复: 17

[其他] 每天解决一个问题2 :巧用c语言位运算(求支持。求收藏.....

[复制链接]

该用户从未签到

33

主题

292

帖子

0

高级会员

Rank: 4

积分
600
最后登录
2016-4-19
发表于 2015-9-4 10:14:28 | 显示全部楼层 |阅读模式
本帖最后由 拉肚肚 于 2015-9-4 10:45 编辑

最近一直在休息,以前遇到的问题也没有总结,分享大家些常用技能吧。希望大家没有get的赶快get新技能!!!!!!!!!
(1) 判断int型变量a是奇数还是偶数           
  a&1   = 0 偶数
  a&1   = 1 奇数
(2) 取int型变量a的第k位 (k=0,1,2……sizeof(int)),即a>>k&1
(3) 将int型变量a的第k位清0,即a=a&~(1<<k)
(4) 将int型变量a的第k位置1, 即a=a|(1<<k)
(5) int型变量循环左移k次,即a=a<<k|a>>16-k   (设sizeof(int)=16)
(6) int型变量a循环右移k次,即a=a>>k|a<<16-k   (设sizeof(int)=16)
(7)整数的平均值
    对于两个整数x,y,如果用 (x+y)/2 求平均值,会产生溢出,因为 x+y 可能会大于INT_MAX,但是我们知道它们的平均值是肯定不会溢出的,我们用如下算法:
int average(int x, int y)   //返回X,Y 的平均值
{   
     return (x&y)+((x^y)>>1);
}
(8)判断一个整数是不是2的幂,对于一个数 x >= 0,判断他是不是2的幂
boolean power2(int x)
{
    return ((x&(x-1))==0)&&(x!=0);
}
(9)不用temp交换两个整数
void swap(int x , int y)
{
    x ^= y;
    y ^= x;
    x ^= y;
}
(10)计算绝对值
int abs( int x )
{
  int y ;
  y = x >> 31 ;
  return (x^y)-y ;        //or: (x+y)^y
}
(11)取模运算转化成位运算 (在不产生溢出的情况下)
      a % (2^n) 等价于 a & (2^n - 1)
(12)乘法运算转化成位运算 (在不产生溢出的情况下)
      a * (2^n) 等价于 a<< n
(13)除法运算转化成位运算 (在不产生溢出的情况下)
      a / (2^n) 等价于 a>> n
      例: 12/8 == 12>>3
(14) a % 2 等价于 a & 1      
(15) if (x == a) x= b;
   else x= a; 等价于 x= a ^ b ^ x;
(16) x 的 相反数 表示为 (~x+1)


//设置x的第y位为1
#define setbit(x,y) (x)|=(1<<(y-1))
//得到x的第y位的值
#define BitGet(Number,pos) ((Number)>>(pos-1)&1)
//打印x的值
#define print(x) printf("%dn",x)
//将整数(4个字节)循环右移动k位
#define Rot(a,k) ((a)<<(k)|(a)>>(32-k))
//判断a是否为2的幂次数
#define POW2(a) ((((a)&(a-1))==0)&&(a!=0))
#define OPPX(x) (~(x)+1)
//返回X,Y 的平均值
int average(int x, int y)
{   
    return (x&y)+((x^y)>>1);
}
//判断a是否为2的幂次数
bool power2(int x)
{
    return ((x&(x-1))==0)&&(x!=0);
}
//x与y互换
void swap(int& x , int& y)
{
     x ^= y;
     y ^= x;
     x ^= y;
}

我知道答案 目前已有17人回答

评分

参与人数 1NXP金币 +5 收起 理由
小七 + 5

查看全部评分

回复

使用道具 举报

该用户从未签到

33

主题

292

帖子

0

高级会员

Rank: 4

积分
600
最后登录
2016-4-19
 楼主| 发表于 2015-9-4 11:00:18 | 显示全部楼层
每个沙发都是自己占
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-9-4 11:02:14 | 显示全部楼层
    这太有用了,谢谢分享
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    33

    主题

    292

    帖子

    0

    高级会员

    Rank: 4

    积分
    600
    最后登录
    2016-4-19
     楼主| 发表于 2015-9-4 11:03:33 | 显示全部楼层
    JackieLaura 发表于 2015-9-4 11:02
    这太有用了,谢谢分享

    哥,你收藏下好么,顺便再支持下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-9-4 11:05:56 | 显示全部楼层
    拉肚肚 发表于 2015-9-4 11:03
    哥,你收藏下好么,顺便再支持下

    已经收藏
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    33

    主题

    292

    帖子

    0

    高级会员

    Rank: 4

    积分
    600
    最后登录
    2016-4-19
     楼主| 发表于 2015-9-4 11:07:52 | 显示全部楼层

    你人太好了,说好的支持呢。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-9-4 11:14:18 | 显示全部楼层
    拉肚肚 发表于 2015-9-4 11:07
    你人太好了,说好的支持呢。。。

    咋支持。。。
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    33

    主题

    292

    帖子

    0

    高级会员

    Rank: 4

    积分
    600
    最后登录
    2016-4-19
     楼主| 发表于 2015-9-4 11:17:18 | 显示全部楼层

    收藏旁边点一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    33

    主题

    292

    帖子

    0

    高级会员

    Rank: 4

    积分
    600
    最后登录
    2016-4-19
     楼主| 发表于 2015-9-4 11:18:37 | 显示全部楼层

    谢谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-9-4 11:18:53 | 显示全部楼层

    已点,请查收
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 19:27 , Processed in 0.119500 second(s), 35 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表