zoukankan      html  css  js  c++  java
  • 位运算转换二进制【进制转换】

    普通十进制转换二进制:

     1.通过不断 %2 和 /2 得到用 1 0表示的数存进数组 但是得到的是倒序 

     2.将数组里面的值倒序输出再存入新的数组即可(其他进制转换同理)

     但是这种方法复杂且代码较长

    #include<stdio.h>
    int main()
    {
        int a[105],b[105],n;
        scanf("%d",&n);
        int count=0;
        while(n){
            b[count++]=n%2;
            n/=2;
        }
        int count1=0;
        for(int i=count-1;i>=0;i--){
            a[count1++]=b[i];
        }
        for(int i=0;i<count1;i++){
            printf("%d",a[i]);
        }
        printf("
    ");
        return 0;
    }
    

    位运算将十进制转换成二进制

    1.将i从31开始循环(如果是32位整数,但2^32会爆int,所以从31开始)

    2.将i左移一位(1<<i)然后和n 做(&)运算

    3.判断运算结果是否为true 如果为真 将1存入第i位数组,反之将0存入数组

    通过该方法也可以实现进制转换 例如: 10

    但是转换后会出现多个0 且必须32位(与定义i=31~0相符合) 

    #include<stdio.h>
    int main()
    {
        int a[105],n;
        scanf("%d",&n);
        for(int i=31;i>=0;i--){
            a[i]=n&(1<<i)?1:0;
        }
        for(int i=31;i>=0;i--){
            printf("%d",a[i]);
        }
        printf("
    ");
        return 0;
    }
  • 相关阅读:
    494 Target Sum 目标和
    493 Reverse Pairs 翻转对
    492 Construct the Rectangle 构建矩形
    491 Increasing Subsequences 递增子序列
    488 Zuma Game 祖玛游戏
    486 Predict the Winner 预测赢家
    485 Max Consecutive Ones 最大连续1的个数
    483 Smallest Good Base
    Django Form组件
    Django Auth组件
  • 原文地址:https://www.cnblogs.com/ldu-xingjiahui/p/12407468.html
Copyright © 2011-2022 走看看