《C程序设计语言》练习 2-7
2017-12-28 16:36
141 查看
练习 2-7
编写一个函数 invert(x, p, n),该函数返回对 x 执行下列操作后的结
果值:将 x 中从第 p 位开始的 n 个(二进制)位求反(即,1 变成 0,0 变成 1),x 的其余各
位保持不变。
其实是可以一个表达式搞定的,但感觉太恶心,所以分开了
我想了一下,循环好像也可以,但要确定循环次数很麻烦
编写一个函数 invert(x, p, n),该函数返回对 x 执行下列操作后的结
果值:将 x 中从第 p 位开始的 n 个(二进制)位求反(即,1 变成 0,0 变成 1),x 的其余各
位保持不变。
其实是可以一个表达式搞定的,但感觉太恶心,所以分开了
#include <stdio.h> invert(x, p, n); main() { int x, y; x = 123; printf("%d\n", invert(x, 2, 3)); } invert(x, p, n) { int a, b; //先搞一个定位器,把那几位定出来 a = ~(~0 << n) << (p - 1); //然后把x中的这几位取反存进b里 b = ~(x & a); //最后把x中的那几位替换成b return x & ~a | b & a; }
我想了一下,循环好像也可以,但要确定循环次数很麻烦
相关文章推荐
- 《C程序设计语言》练习 1-6,1-7
- 《C程序设计语言》练习 2-8
- 《C程序设计语言》练习 3-3
- 《C程序设计语言》练习 2-6
- 《C程序设计语言》练习 3-4
- 《C程序设计语言》练习1-5
- 《C程序设计语言》练习1-10
- 《C程序设计语言》练习 4-2
- 《C程序设计语言》练习 4-3
- 《C程序设计语言》练习1-9
- 《C程序设计语言》练习 3-6
- 《C程序设计语言》练习 4-4
- 《C程序设计语言》学习笔记——练习4-1
- C程序设计语言练习2-4
- 《C程序设计语言》练习 2-9
- 《C程序设计语言》学习笔记——练习2-3
- 《C程序设计语言》练习 2-10
- 《C程序设计语言》练习 1-12
- 《C程序设计语言》------练习7-7、7-8