zoukankan      html  css  js  c++  java
  • 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同

    思路:利用&用算加右移的方法来提取二进制中的每一位数,然后进行比较,查看是否相同。

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 int main()
     5 {
     6     //i=1999 -> 011111001111
     7     //j=2299 -> 100011111011
     8     int i = 0, j = 0;
     9     int a = 0, b = 0, num = 0;
    10     //a与b分别是i与j二进制中的最后一位的数字,num 为位(bit)不同的个数
    11     printf("请输入您要比较的两个数字:
    ");
    12     scanf("%d %d", &i, &j);
    13     while (i != 0 || j != 0)
    14     {
    15         //这里查看整数i的二进制的最后一位并赋值给a
    16         //每次查看结束就右移一位改变最后一位的数值
    17         if ((i & 1) == 1)
    18         {
    19             a = 1;
    20             i = i >> 1;
    21         }
    22         else
    23         {
    24             a = 0;
    25             i = i >> 1;
    26         }
    27         //这里查看整数j的二进制的最后一位并赋值给b
    28         //每次查看结束就右移一位改变最后一位的数值
    29         if ((j & 1) == 1)
    30         {
    31             b = 1;
    32             j = j >> 1;
    33         }
    34         else
    35         {
    36             b = 0;
    37             j = j >> 1;
    38         }
    39         //最后比较a和b的值,不一样则++num
    40         if (a != b)
    41         {
    42             ++num;
    43         }
    44 
    45     }
    46     printf("%d",num);
    47     
    48     return 0;
    49 
    50 }
  • 相关阅读:
    c++ ::和:
    c++ extern
    c++ cpp和hpp
    c++ include
    caffe调试
    caffe blob理解
    poj3126
    FFmpeg滤镜使用指南
    Android之Activity之间传递对象
    Server Tomcat v8.0 Server at localhost failed to start.
  • 原文地址:https://www.cnblogs.com/cuckoo-/p/10360956.html
Copyright © 2011-2022 走看看