如何在C中使用按位将数字转换为字母数字?

如何在C中使用按位将数字转换为字母数字?,c,bit-manipulation,C,Bit Manipulation,我已经写了一个程序,将数字转换成字符串。核心逻辑是使用 % 10. 然而,我正在寻找其他的方法。另一种方法是使用位运算符。我想到的第一个问题是如何使用位运算分割数字。我无法思考这些问题。这是我通常的节目 #include "stdio.h" void itoaperChar(int n, char *s) { s[0] = '0' + n; s[1] = '\0'; } typedef struct my_string { char val; stru

我已经写了一个程序,将数字转换成字符串。核心逻辑是使用 % 10. 然而,我正在寻找其他的方法。另一种方法是使用位运算符。我想到的第一个问题是如何使用位运算分割数字。我无法思考这些问题。这是我通常的节目

   #include "stdio.h"

void itoaperChar(int n, char *s)
{
    s[0] = '0' + n;

    s[1] = '\0';
}

typedef struct my_string
{
    char val;
    struct my_string *next;
}my_string;

void convertitoString(int nu, char *des)
{
    char tempChar[2];
    my_string *Head = NULL;
    my_string *tempNode = NULL;

    while( nu != 0)
    {
        /** when we apply the logic of traversing from last, the data is accessed as LIFO **/
        /** we are again applying LIFO to make it FIFO **/
        int temp = nu%10;
        itoaperChar(temp,&tempChar);
        if(Head == NULL )
        {
            Head =(my_string*)malloc(sizeof(my_string));

            /**  Remember, strcpy looks for \0 in the source string. Always, ensure that the string is null terminated. Even if the string is just 1 byte.**/
            strcpy(&(Head->val),tempChar);
            Head->next = NULL;
        }
        else
        {
            tempNode = (my_string*)malloc(sizeof(my_string));
            strcpy(&(tempNode->val),tempChar);
            tempNode->next = Head;
            Head = tempNode;
        }

        nu = (nu - temp)/10;

    }

    int lcindex = 0;

    while(Head!=NULL)
    {

        strcpy(&(des[lcindex]),&(Head->val));
        lcindex++;
        tempNode = Head;
        Head=Head->next;
        free(tempNode);
        tempNode = NULL;
    }

    des[lcindex] = '\0';

}

void main()
{
    char t[10];
    convertitoString(1024,t);
    printf("The value of t is %s ", t);
}

模是基于除法的算术运算符;它基本上是一个算术运算符,而不是位运算符。除非模是2的幂(这里没有),否则没有简单的方法用位运算符实现它。对不起。

模是基于除法的算术运算符;它基本上是一个算术运算符,而不是位运算符。除非模是2的幂(这里没有),否则没有简单的方法用位运算符实现它。对不起。

模是基于除法的算术运算符;它基本上是一个算术运算符,而不是位运算符。除非模是2的幂(这里没有),否则没有简单的方法用位运算符实现它。对不起。

模是基于除法的算术运算符;它基本上是一个算术运算符,而不是位运算符。除非模是2的幂(这里没有),否则没有简单的方法用位运算符实现它。抱歉。

我不理解你的代码,因为它的缩进很严重,但为什么要把它弄得这么复杂呢?使用除以10的数字到字符串程序只能占用几(几十)行


如果您只想使用位运算,可以使用。它仅通过按位操作将数字从二进制转换为BCD。从BCD到字符串的转换只是从压缩半字节到2个字符字节的扩展

我不理解您的代码,因为它的缩进非常严重,但为什么要让它如此复杂呢?使用除以10的数字到字符串程序只能占用几(几十)行


如果您只想使用位运算,可以使用。它仅通过按位操作将数字从二进制转换为BCD。从BCD到字符串的转换只是从压缩半字节到2个字符字节的扩展

我不理解您的代码,因为它的缩进非常严重,但为什么要让它如此复杂呢?使用除以10的数字到字符串程序只能占用几(几十)行


如果您只想使用位运算,可以使用。它仅通过按位操作将数字从二进制转换为BCD。从BCD到字符串的转换只是从压缩半字节到2个字符字节的扩展

我不理解您的代码,因为它的缩进非常严重,但为什么要让它如此复杂呢?使用除以10的数字到字符串程序只能占用几(几十)行



如果您只想使用位运算,可以使用。它仅通过按位操作将数字从二进制转换为BCD。从BCD到字符串的转换只是从压缩半字节到2个字符字节的扩展

请正确缩进代码。(还有,你似乎忘记了关闭评论栏。)给我一点时间——我怀疑答案很有趣。我怀疑有很多人会用脸撞桌子,然后再问另一个问题……你为什么说他们会用脸撞桌子?这是家庭作业吗?为什么要寻找一种通过逐位操作实现这一点的方法?首先,我想寻找一种方法,在不创建链表的情况下执行%10版本,并使用strcpy移动1个字符串。哎呀!请正确缩进代码。(还有,你似乎忘记了关闭评论栏。)给我一点时间——我怀疑答案很有趣。我怀疑有很多人会用脸撞桌子,然后再问另一个问题……你为什么说他们会用脸撞桌子?这是家庭作业吗?为什么要寻找一种通过逐位操作实现这一点的方法?首先,我想寻找一种方法,在不创建链表的情况下执行%10版本,并使用strcpy移动1个字符串。哎呀!请正确缩进代码。(还有,你似乎忘记了关闭评论栏。)给我一点时间——我怀疑答案很有趣。我怀疑有很多人会用脸撞桌子,然后再问另一个问题……你为什么说他们会用脸撞桌子?这是家庭作业吗?为什么要寻找一种通过逐位操作实现这一点的方法?首先,我想寻找一种方法,在不创建链表的情况下执行%10版本,并使用strcpy移动1个字符串。哎呀!请正确缩进代码。(还有,你似乎忘记了关闭评论栏。)给我一点时间——我怀疑答案很有趣。我怀疑有很多人会用脸撞桌子,然后再问另一个问题……你为什么说他们会用脸撞桌子?这是家庭作业吗?为什么要寻找一种通过逐位操作实现这一点的方法?首先,我想寻找一种方法,在不创建链表的情况下执行%10版本,并使用strcpy移动1个字符串。哎呀!这很酷,但双涉猎算法除了按位运算外,还包括算术运算。我想我真的不明白OP是在干什么…@pat几乎没有办法只用位运算来完成复杂的算术运算。你可以用软件加法器代替加法和减法,但这会使函数速度严重减慢。这很酷,但双涉猎算法除了按位运算外,还包括算术运算。我想我真的不明白OP是在干什么…@pat几乎没有办法只用位运算来完成复杂的算术运算。您可以用软件加法器代替加法和减法,但t