Work_8

写一个函数返回参数二进制中 1 的个数
比如: 15  =>  0000 1111  =>  4 个 1

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int Count_one_bits(unsigned int value){
    int count = 0;
    for (int i = 0; i < 8; i++){
        if ((value >> i) & 1){
            count++;
        }
    }
    return count;
}

int main(){
    int input;
    printf("请输入一个整数:\n");
    scanf("%d", &input);
    printf("该整数的二进制中1的个数为:%d", Count_one_bits(input));
    printf("\n");
    system("pause");
    return 0;
}

 

获取一个数二进制序列中所有的偶数位和奇数位,
分别输出二进制序列。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void Bit(int input){
    int temp = 0;
    printf("该整数二进制的偶数位为:\n");
    for (int i = 31; i > 0; i = i - 2){
        temp = (input >> i) & 1;
        printf("%d ", temp);
    }
    printf("\n");
    printf("该整数二进制的奇数位为:\n");
    for (int i = 30; i >= 0; i = i - 2){
        temp = (input >> i) & 1;
        printf("%d ", temp);
    }
}

int main(){
    int input;
    printf("请输入一个整数:\n");
    scanf("%d", &input);
    Bit(input);
    printf("\n");
    system("pause");
    return 0;
}

 

输出一个整数的每一位。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void Number(int input){
    //从最高为开始打印
    if (input < 9){
        printf("%d ", input);
        return;
    }
    Number(input / 10);
    printf("%d ", input % 10);
    return;

    ////从最低位开始打印
    //if (input > 9){
    //    printf("%d  ", input % 10);
    //    return Number(input / 10);
    //}
    //printf("%d ", input);
}

int main(){
    int input ;
    printf("请输入一个整数:\n");
    scanf("%d", &input);
    printf("该整数的每一位为:\n");
    Number(input);
    printf("\n");
    system("pause");
    return 0;
}

 

编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int Compare(int input1, int input2){
    int count = 0;
    for (int i = 0; i < 16; i++){
        if (((input1 >> i) & 1) != ((input2 >> i) & 1)){
            count++;
        }
    }
    return count;
}

int main(){
    int input1, input2;
    printf("请输入两个整数:\n");
    scanf("%d %d", &input1, &input2);
    printf("%d", Compare(input1, input2));
    printf("\n");
    system("pause");
    return 0;
}

 

转载于:https://www.cnblogs.com/lkimprove/p/10171710.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值