|
发表于 2021-10-27 17:15:43
|
显示全部楼层
本帖最后由 jackz007 于 2021-10-27 19:56 编辑
- #include <stdio.h>
- char * foo(char s[] , unsigned int d)
- {
- unsigned int i , k , m ;
- for(k = d , m = 0 ; k ; k /= 2 , m ++) ;
- for(s[m] = '\0' , k = d , i = m ; k ; k /= 2 , i --) s[i - 1] = '0' + k % 2 ;
- return s ;
- }
- int main(void)
- {
- unsigned int n , i ;
- char s[256] ;
- scanf("%u" , & n) ;
- printf("%s\n" , foo(s , n)) ;
- printf("1 : %d\n" , (n >> 1) & 1) ; /* 第1位 */
- printf("3 : %d\n" , (n >> 3) & 1) ; /* 第3位 */
- printf("5 : %d\n" , (n >> 5) & 1) ; /* 第5位 */
- n = n ^ (1 | (1 << 2) | (1 << 3) | (1 << 6)) ; /* 反转第0、2、3、6 位 */
- printf("%s\n" , foo(s , n)) ;
- printf("%u\n" , n) ;
- n = n ^ (1 | (1 << 2) | (1 << 3) | (1 << 6)) ; /* 复原被反转的第0、2、3、6 位 */
- printf("%s\n" , foo(s , n)) ;
- printf("%u\n" , n) ;
- }
复制代码
编译、运行实况:
- D:\00.Excise\C>g++ -o x x.c
- D:\00.Excise\C>x
- 87655678
- 101001110011000010011111110
- 1 : 1
- 3 : 1
- 5 : 1
- 101001110011000010010110011
- 87655603
- 101001110011000010011111110
- 87655678
- D:\00.Excise\C>
复制代码 |
|