Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.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 字符到二进制函数不';I don’我没有按预期工作_C_Binary - Fatal编程技术网

C 字符到二进制函数不';I don’我没有按预期工作

C 字符到二进制函数不';I don’我没有按预期工作,c,binary,C,Binary,我制作了一个函数,用于将数字转换为二进制形式: size_t atobin (char n) { size_t bin= 0, pow; for (size_t c= 1; n>0; c++) { pow= 1; for (size_t i= 1; i<c; i++) //This loop is for getting the power of 10 pow*= 10; bin+= (n

我制作了一个函数,用于将数字转换为二进制形式:

size_t atobin (char n)
{
    size_t bin= 0, pow;
    for (size_t c= 1; n>0; c++)
    {
        pow= 1;
        for (size_t i= 1; i<c; i++) //This loop is for getting the power of 10
            pow*= 10;
        bin+= (n%2)*pow;
        n/= 2;
    }
    return bin;
}
size\u t atobin(字符n)
{
尺寸=0,功率;
对于(大小c=1;n>0;c++)
{
功率=1;

对于(size_t i=1;i
char
,默认情况下,C中的字符被认为是有符号的

char
包含8位(大部分)。对于有符号字符,MSB用于符号。因此,只能使用7位

0111111
2
=(
127
10
您的函数可以使用的最大值。(当您传递一种变量时,该变量最大可容纳
127

如果使用无符号字符,则MSB不会用作符号位。所有8位都会使用,为我们提供最大可能值(
1111111
2
=(
255
10

对于有符号数字,最小/最大值为
-127
+127

对于无符号数字,最小/最大值为
0
+255

因此,即使您对传递的参数
unsigned char
进行了类型设置,它可以保存的最大值也是
+255


更详细一点: Q)
>127
值分配给
char
参数时会发生什么

默认情况下,它是有符号字符。它是8位的。但是它不能保存它。那么会发生什么呢

结果是定义了实现

假设该值为
130
。二进制值为
1000010
。在大多数情况下,该值返回
-126
。因此这将是
n
的值。
n>0;
失败。从未输入循环。它返回
0


现在,如果我们将其设为unsigned char,那么它可以保存0到255(包括0和255)之间的值。这就是您想要的


注:

Q)
>255个
值存储在无符号字符中时会发生什么

该值减少为
的模(最大值unsigned char可容纳+1)
,即 256

所以,应用模运算并将结果放入 无符号字符


默认情况下,C中的
char
被认为是有符号的

char
包含8位(大部分)。对于有符号字符,MSB用于符号。因此,只能使用7位

0111111
2
=(
127
10
您的函数可以使用的最大值。(当您传递一种变量时,该变量最大可容纳
127

如果使用无符号字符,则MSB不会用作符号位。所有8位都会使用,为我们提供最大可能值(
1111111
2
=(
255
10

对于有符号数字,最小/最大值为
-127
+127

对于无符号数字,最小/最大值为
0
+255

因此,即使您对传递的参数
unsigned char
进行了类型设置,它可以保存的最大值也是
+255


更详细一点: Q)
>127
值分配给
char
参数时会发生什么

默认情况下,它是有符号字符。它是8位的。但是它不能保存它。那么会发生什么呢

结果是定义了实现

假设该值为
130
。二进制值为
1000010
。在大多数情况下,该值返回
-126
。因此这将是
n
的值。
n>0;
失败。从未输入循环。它返回
0


现在,如果我们将其设为unsigned char,那么它可以保存0到255(包括0和255)之间的值。这就是您想要的


注:

Q)
>255个
值存储在无符号字符中时会发生什么

该值减少为
的模(最大值unsigned char可容纳+1)
,即 256

所以,应用模运算并将结果放入 无符号字符


char
已签名,将其设置为
unsigned char
True,非常感谢
char
已签名,将其设置为
unsigned char
True,非常感谢