0
点赞
收藏
分享

微信扫一扫

【leetcode_693】【简单】binary-number-with-alternating-bits /交替位二进制数

晚安大世界 2022-03-30 阅读 29
leetcode

文章目录

URL


题目

截图


分析

截图


源码

工程结构

.
└── main_694.c

源码文件

/* main_694.c */
#include <stdio.h>
#include <stdbool.h>

bool has_alternating_bits(int n ){
    long a = n ^ (n >> 1);       // 10101010... ^   01010101... => 11111111...
    return (a & (a + 1)) == 0;   // 11111111... & 1 00000000... => 0 00000000 == 0 => true
}

void print_bits(int n){
    //for (int i = sizeof(n)*X; i > 0; --i){
    for (int i = sizeof(n); i > 0; --i){
        printf("%c",((n & (1 << i)) == 0 ? '0' : '1'));
    }
    printf("\n");
}

int main()
{
    int n = 0;
    bool ret = true;

    const int arr[] = {5,7,11}; // return true,false,false

    for (unsigned int i = 0; i < (unsigned int)( sizeof(arr)/sizeof(arr[0])); ++i){
        n = arr[i];
        printf("input n = %d , bits = ",n);
        print_bits(n);
        ret = has_alternating_bits(n);
        printf("ret = %s\n\n",ret == true ? "true" : "flase");
    }

    return 0;
}

LOG参考:

input n = 5 , bits = 0010
ret = true

input n = 7 , bits = 0011
ret = flase

input n = 11 , bits = 0101
ret = flase


源码概述


小结

举报

相关推荐

0 条评论