二进制转换功能 [英] Function for binary conversion

查看:82
本文介绍了二进制转换功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用我在下面的C语言中编写的函数将十进制值转换为二进制.我无法弄清楚为什么它打印32个零而不是二进制值2的原因.

I am trying to convert a decimal value to binary using the function I wrote in C below. I cannot figure out the reason why it is printing 32 zeroes rather than the binary value of 2.

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>

int binaryConversion(int num){
    int bin_buffer[32];
    int mask = INT_MIN;
    for(int i = 0; i < 32; i++){
        if(num & mask){
            bin_buffer[i] = 1;
            mask >> 1;
        }
        else{
            bin_buffer[i] = 0;
            mask >> 1;
        }
    }
    for(int j = 0; j < 32; j++){
        printf("%d", bin_buffer[j]);
    }
}


int main(){
    binaryConversion(2);
}

谢谢

推荐答案

两个错误:

  1. 您使用>>而不是>>=,因此实际上您从未更改过mask.
  2. 您没有将mask声明为unsigned,因此当您进行移位时,它将得到符号扩展,这是您不需要的.
  1. You use >> instead of >>=, so you're not actually ever changing mask.
  2. You didn't declare mask as unsigned, so when you shift, it'll get sign-extended, which you don't want.

这篇关于二进制转换功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆