Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将十进制数转换为它的字符数组';s二进制表示:_C_Binary_Char - Fatal编程技术网

C 将十进制数转换为它的字符数组';s二进制表示:

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时,开始

如何用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
时,开始打印/保存/任何内容,即使以后检测到
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