2.1运算法与表达式

1.假设一个 int 型变量 a ,要把 a 的 bit5 变为 0 ,其它位不变,怎么做?

a = a & (~(1 << 5));

2.假设一个 int 型变量 a ,要把 a 的 bit6 变为 1 ,其它位不变,怎么做?

a = a | (1 << 6);

3.假设一个 int 型变量 a ,要把 a 的 bitn(0~31) 变为 1 ,其它位不变,怎么做?

a = a | (1 << n)

4.假设一个 int 型变量 a ,要把 a 的 bitn(0~31) 变为 0 ,其它位不变,怎么做?

a = a & (~(1 << n))

5.顺序求解,结果为最后一个表达式的值,并且优先级最低。

a=(3+4, 5*6, 2+1); //a = 3;

a=3*3, a+6, a+7; // 16 ,a =9

(a=3*5, a*4), a+5 //20 a = 15

6、将 x(int) 中 bitm 开始的连续 n个 bit 取反,其余保持不变

x(做之前):

xxxxx....XXXXXX....xxxxx

x(做之后):

xxxxx....~X~X~X~X~X~X....xxxxx

解答:

x ^ 1 = ~ x;

x = (((1<<n) - 1) << m ) ^ x;

7、将 x(int) 中 bitm 开始的连续 n 个 bit 设置为 y(int) 中最右边 n 个bit,其它位不变

x(做之前):

xxxxx....XXXXXX....xxxxxx

y:

yyyyy..............YYYYYY

x(做之后):

xxxxx....YYYYYY....xxxxxx

解答:

1)把x的 bitm 开始的连续 n 个 bit 清零

2)提取y(int) 中最右边 n 个bit

3)把y 的n个bit为插入到x中

假设 n = 4, m = 1

1)x清零: x = x & (~ (((1 << n) - 1) << m));

0001 0000

0000 1111

0001 1110

1110 0001

2)提取y(int):y = y & ((1<<n)-1);

0001 0000

0000 1111

3)插入 x = x | (y << m);

x = x & (~ (((1 << n) - 1) << m));

y = y & ((1<<n)-1);

x = x | (y << m);

/*

总结;

1.看考察的是哪个知识点

2.要有算法知道怎么搞

3.一步一步的一出来

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值