在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;
}