二进制转换功能 [英] Function for binary conversion
本文介绍了二进制转换功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用我在下面的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);
}
谢谢
推荐答案
两个错误:
- 您使用
>>
而不是>>=
,因此实际上您从未更改过mask
. - 您没有将
mask
声明为unsigned
,因此当您进行移位时,它将得到符号扩展,这是您不需要的.
- You use
>>
instead of>>=
, so you're not actually ever changingmask
. - You didn't declare
mask
asunsigned
, so when you shift, it'll get sign-extended, which you don't want.
这篇关于二进制转换功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文