<Cracking the Coding Interview>-제5장: 비트 조작-제목1

5106 단어 interview
2014-03-19 05:45
제목: 두 개의 숫자 M과 N을 정하고 N을 이진 비트에 따라 M의 특정 단위로 덮어씁니다.
해법: 비트 조작, 코드를 보십시오.
코드:
 1 // 5.1 Insert one number into the certain bit segment of another number.

 2 #include <cstdio>

 3 using namespace std;

 4 

 5 void printBinary(unsigned num)

 6 {

 7     unsigned bit = 1 << 31;

 8     

 9     do {

10         putchar('0' + !!(num & bit));

11         bit >>= 1;

12     } while (bit);

13 }

14 

15 unsigned insertBits(unsigned n, unsigned m, int ll, int rr)

16 {

17     return (n >> (rr + 1) << (rr + 1)) + (m << ll) + (n - (n >> ll << ll));

18 }

19 

20 int main()

21 {

22     unsigned n, m;

23     unsigned res;

24     int low, high;

25     

26     while (scanf("%u%u", &n, &m) == 2) {

27         scanf("%d%d", &low, &high);

28         res = insertBits(n, m, low, high);

29         printBinary(n);

30         putchar('
'); 31 printBinary(m); 32 putchar('
'); 33 printBinary(res); 34 putchar('
'); 35 } 36 37 return 0; 38 }

좋은 웹페이지 즐겨찾기