C 将十进制数转换为它的字符数组';s二进制表示:
如何用C编写代码,将十进制数的二进制表示形式分配给char变量C 将十进制数转换为它的字符数组';s二进制表示:,c,binary,char,C,Binary,Char,如何用C编写代码,将十进制数的二进制表示形式分配给char变量 \\ x is the value of the decimal integer \\ y is length of the binary representation { binary[33] = {0}; while(x!=0){ binary[y] = (x%2)+'0'; y--; x/=2; } } 在数字中扫描位的想法是从输入数字的MSB位开始,然后继续到LSB位。当检测到第一个1时,开始
\\ x is the value of the decimal integer
\\ y is length of the binary representation
{
binary[33] = {0};
while(x!=0){
binary[y] = (x%2)+'0';
y--;
x/=2;
}
}
在数字中扫描位的想法是从输入数字的MSB位开始,然后继续到LSB位。当检测到第一个
1
时,开始打印/保存/任何内容,即使以后检测到0
这是现在的示例,它将打印您的数字位,当它到达第一个1
时开始打印
#include <stdio.h>
#include "limits.h"
int main() {
unsigned int num = 10;
int y = 0, i;
for (i = sizeof(num) * CHAR_BIT - 1; i >= 0; i--) {
if (num & (1U << i)) {
printf("1");
y++;
} else if (y) {
printf("0");
y++;
}
}
printf("\n");
return 0;
}
#包括
#包括“限制.h”
int main(){
无符号整数=10;
int y=0,i;
对于(i=sizeof(num)*字符位-1;i>=0;i--){
如果(数字,(1U如果设置了最低位,则执行number&1
而不是number%2
@tilz0R的速度要快得多。过去10-20年中任何半合理的编译器都会将模转换为掩蔽运算,如果它产生相同的结果。@tilz0R几乎相同。编译器可能会生成相同的代码。请阅读,提供一个nd一个特定的问题。注意,这个问题在S.O上已经回答了几十次。只需查看浏览器窗口右侧的相关帖子就会发现几个。搜索会发现更多。putchar('1')
或putchar('0
)`而不是可变的printf
?迂腐地说,在未签名的被填充的罕见机器上,sizeof(num)*字符位-1
是一个问题,但对于学习者代码来说已经足够好了。另一种方法是使用无符号掩码=UINT\u MAX-UINT\u MAX/2
,然后使用掩码>>=1;
同样值得注意的是,负数的表示形式(例如无符号整数=-5;
)在使用两个compaind(所有x86变体)的机器上,其双compaind存储格式标志将扩展到num