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