- void printBinary(int m){
- // 提示用户输入一个数
- printf("打印一个数的二进制原码\n请输入一个数:\n");
- // 判断输入的数是否是数字,如果不是则使用getchar函数将缓冲区里的无效字符取出来,并重新输入
- while (!(scanf("%d",&m))) {
- while (getchar()!='\n');
- printf("输入错误!请重新输入:\n");
- }
- // 当输入正数时,打印其二进制原码
- if (m >= 0){
- for (int i = 8*sizeof(int)-1; i >= 0; i--) {
- // 让数右移i位,并与1进行与运算,然后打印结果
- printf("%d",((m>>i)&1));
- // 每打印8位就打印一个空格
- if (0 == i%8) {
- printf(" ");
- }
- }
- }else{
- // 当输入负数时,打印其二进制原码
- for (int i = 8*sizeof(int)-1; i >= 0; i--) {
- // 让最高位,既符号位永远打印1
- if (8*sizeof(int)-1 == i){
- printf("1");
- }else {
- // 让这个负数取反并加1既将这个负数的负号去掉,然后再去右移i位并和1进行与运算,然后打印
- printf("%d",(((~m+1)>>i)&1));
- }
- // 让最高位,既符号位永远打印1
- if (0 == i%8) {
- printf(" ");
- }
- }
- }
复制代码
|
|