求一个正整数不大于它的偶数

该程序通过将正整数的二进制表示的最低位清零来将其转换为不超过原数的最大偶数。算法分析包括二进制操作和"按位与"运算,源代码展示了如何使用C语言实现这一功能,包括输入数组,显示原数组,执行转换并显示转化后的数组。
摘要由CSDN通过智能技术生成

问题描述:

编写一个程序,其功能是将正整数组中所有元素转换为不大于它的最大偶数,并且显示输出。


算法分析:

要将一个正整数转换为不大于它的最大偶数,只需将该正整数所对应的二进制数的最低位清零即可。

例如:

十进制                        二进制

2                                     10

3                                      11

4                                       100

5                                    101

6                                      110

7                                      111

8                                      1000

如要将数x的第n和位清零,就将x与数y“按位与”运算,其中y所对应的二进制数除了第n和m位为0外,其他位全为1。

将一个正整数所对应的二进制数的最低位清零,就是这个正整数和一个最低位为0其余为1的16位(整数占两个字节)

数进行“按位与”操作,即于1111111111111110(对应的十六进制数为ffe)进行“按位与”运算。


源代码:


#include<stdio.h>

void main()
{
    int k,a[10];
    printf("inp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值