You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何比较数组元素,判断十进制转二进制后的数字是否相等

十进制转二进制判定逻辑实现

现有代码问题修正

你当前代码中的while (num != 0)属于冗余逻辑,内层for循环已经完成8位二进制位的计算,可直接删除该层while循环。

判定逻辑实现

根据你给出的示例推导,判定规则为:二进制有效位不存在相邻的相同数字,符合返回true,不符合返回false。逻辑实现步骤如下:

  1. 先找到8位二进制的最高有效位下标,排除前导0的干扰
  2. 从最高位开始逐位对比相邻两位的值,出现任意一组相等即判定为不满足规则

完整可运行代码

#include<iostream>
using namespace std;
int main()
{
    int num;
    cin >> num;
    int arr[8] = {};
    if ((num >= 0) && (num <= 255))
    {
        // 转换为8位二进制,低位存在arr[0],高位存在arr[7]
        for (int i = 0; i < 8; i++)
        {
            arr[i] = num % 2;
            num = num / 2;
        }
        // 输出8位二进制
        for (int i = 7; i >= 0; i--)
            cout << arr[i];
        cout << endl;
        
        // 判定逻辑
        bool res = true;
        // 先找最高有效位下标
        int highest = 0;
        for (int i = 7; i >= 0; i--)
        {
            if (arr[i] == 1)
            {
                highest = i;
                break;
            }
        }
        // 从最高位往下对比相邻位
        for (int i = highest; i > 0; i--)
        {
            if (arr[i] == arr[i-1])
            {
                res = false;
                break;
            }
        }
        // 输出结果
        cout << (res ? "true" : "false") << endl;
    }
    else
    {
        cout << "error" << endl;
        return 1;
    }
    system("pause");
    return 0;
}

测试验证

  • 输入7:二进制输出00000111,相邻位存在相同值,输出false,符合示例
  • 输入5:二进制输出00000101,相邻位无相同值,输出true,符合示例

内容的提问来源于stack exchange,提问作者Viki Mihailova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:36:02