赞
踩
/* binbit.c -- 使用位操作显示二进制 */ #include <stdio.h> #include <limits.h>// 提供 CHAR_BIT 的定义,CHAR_BIT 表示每字节的位数 char *itobs(int , char *); void show_bstr(const char *); int main(void) { char bin_str[CHAR_BIT *sizeof(int) + 1];//每个字节占8位,8X4一共32位,数组字符串最后一位添加‘\0’ int number; puts("Enter integers and see them in binary."); puts("Non-numeric input terminates program."); while(scanf("%d", &number) == 1) { itobs(number, bin_str); //转换过后的整数将以二进制字符串的形式存放进数组中 //注意二进制数字中的高位,是数组中元素下标的低位 printf("%d is", number); show_bstr(bin_str); //显示二进制字符串 putchar('\n'); } return 0; } char *itobs(int n, char *ps)//使用指针去接受实参传递过来的数组首地址信息 { int i; const static int size = CHAR_BIT * sizeof(int); //大小 for(i = size -1; i >= 0; i--, n >>= 1) { ps[i] = (01 & n) + '0'; //我们输入的整数n,在计算机中是以二进制形式存在,只是显示是我们所看到的计算后的结果7 //这里的整数n无需有过多的理解 //‘>>=’: 每次都把右移过的进制作为新的结论 } ps[size] = '\0'; //数组字符串最后一位添加‘\0’ return ps; } void show_bstr(const char *str) { int i = 0; while(str[i]) { putchar(str[i]); if(++i % 4 == 0) { putchar(' '); } } }
’
’
’
/* binbit.c -- 使用位操作显示二进制 */ #include <stdio.h> #include <limits.h>// 提供 CHAR_BIT 的定义,CHAR_BIT 表示每字节的位数 char *itobs(int , char *); void show_bstr(const char *); int main(void) { char bin_str[CHAR_BIT *sizeof(int) + 1];//每个字节占8位,8X4一共32位,数组字符串最后一位添加‘\0’ int number; puts("Enter integers and see them in binary."); puts("Non-numeric input terminates program."); while(scanf("%d", &number) == 1) { itobs(number, bin_str); //转换过后的整数将以二进制字符串的形式存放进数组中 //注意二进制数字中的高位,是数组中元素下标的低位 printf("%d is :", number); show_bstr(bin_str); //显示二进制字符串 putchar('\n'); number = invert_end(number, 4); printf("转换后的数字 :%d\n", number); printf("将最后4位反转得到:\n"); show_bstr(itobs(number,bin_str)); putchar('\n'); } return 0; } //将整数转换成二进制字符串 char *itobs(int n, char *ps) { int i; const static int size = CHAR_BIT * sizeof(int); //大小 for(i = size -1; i >= 0; i--, n >>= 1) { ps[i] = (01 & n) + '0'; //我们输入的整数n,在计算机中是以二进制形式存在,只是显示是我们所看到的计算后的结果7 //这里的整数n无需有过多的理解 //‘>>=’: 每次都把右移过的进制作为新的结论 } ps[size] = '\0'; //数组字符串最后一位添加‘\0’ return ps; } //获取后四位异或后的值 int invert_end(int num, int bits) { int mask = 0; int bitval = 1; while(bits-- > 0) { mask |= bitval; bitval <<= 1; } return num ^ mask; } void show_bstr(const char *str) { int i = 0; while(str[i]) { putchar(str[i]); if(++i % 4 == 0) { putchar(' '); } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。