在C中打印左移或右移的中间值
To print intermediate value of left or right shift in C
在 "decimal number" 的左移或右移期间,我想要二进制格式的结果而不是十进制格式。我知道如何将十进制转换为二进制。还有其他方法可以捕获中间二进制值吗?
以下是如何以十六进制打印,您可以很容易地在脑海中将其转换为二进制。
printf("0x%x\n", my_int);
这是以二进制格式打印数字的代码:
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char **argv)
{
char buf[65] = { 0 }, *endptr;
long my_int;
unsigned long tmp_int;
int i, j;
if (argc != 2 || (errno = 0, (my_int = strtol(argv[1], &endptr, 0)), errno) || *endptr)
exit((fprintf(stderr, "Usage: %s <number>\n", argv[0]), 1));
/* break my_int down into a binary character represenation */
tmp_int = my_int;
i = 0;
do
{
buf[i++] = ((tmp_int & 0x1) ? '1' : '0');
tmp_int >>= 1;
}
while (0 != tmp_int);
/* reverse buf for printing */
for (j = 0, --i; j < i; ++j, --i)
{
char c = buf[j];
buf[j] = buf[i];
buf[i] = c;
}
printf("%s\n", buf);
return 0;
}
在 "decimal number" 的左移或右移期间,我想要二进制格式的结果而不是十进制格式。我知道如何将十进制转换为二进制。还有其他方法可以捕获中间二进制值吗?
以下是如何以十六进制打印,您可以很容易地在脑海中将其转换为二进制。
printf("0x%x\n", my_int);
这是以二进制格式打印数字的代码:
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char **argv)
{
char buf[65] = { 0 }, *endptr;
long my_int;
unsigned long tmp_int;
int i, j;
if (argc != 2 || (errno = 0, (my_int = strtol(argv[1], &endptr, 0)), errno) || *endptr)
exit((fprintf(stderr, "Usage: %s <number>\n", argv[0]), 1));
/* break my_int down into a binary character represenation */
tmp_int = my_int;
i = 0;
do
{
buf[i++] = ((tmp_int & 0x1) ? '1' : '0');
tmp_int >>= 1;
}
while (0 != tmp_int);
/* reverse buf for printing */
for (j = 0, --i; j < i; ++j, --i)
{
char c = buf[j];
buf[j] = buf[i];
buf[i] = c;
}
printf("%s\n", buf);
return 0;
}