当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 showbits()用法及代码示例


位运算符是在二进制级别对整数和单位进行操作的运算符(就像 +、*、&& 等)。这意味着他们直接查看整数的二进制数字或位。这听起来很吓人,但事实上,位运算符非常易于使用且非常有用!但重要的是,您必须了解二进制数和十六进制数。

按位运算符

让我们看一下不同的按位运算符:

  1. &(按位与)
  2. | (按位或)
  3. 〜(按位非)
  4. ^(按位XOR)
  5. <<(按位左移)
  6. >>(按位右移)
  7. >>>(按位无符号右移)
  8. &=(按位与分配)
  9. | =(按位或分配)
  10. ^ =(按位XOR分配)
  11. << =(按位左移和赋值)
  12. >> =(按位右移和赋值)
  13. >>> =(按位无符号右移和赋值)

在本文中,重点是showbits()函数。让我们看一下它与按位运算符的关系。

showbits()函数

此函数主要处理按位运算符的概念。让我们看一下下面的C程序,以了解showbits()的函数。

C


// C program to demonstrate the
// showbits() function
#include <stdio.h>
void showbits (int n)
{
  int i, k, andmask;
  for (i = 15; i >= 0;i--)
  {
    andmask = 1 << i;
    k = n & andmask;
    k == 0 ? printf ("0"):printf ("1");
  }
}
// Driver code
int main()
{
  showbits(5);   
  return 0;
}
输出
0000000000000101

解释

  1. 此函数所做的全部工作都是使用AND运算符和变量andmask。 andmask变量用于检查各个位的状态。如果该位为OFF,则打印0,否则打印1。
  2. 第一次通过循环,变量和掩码将包含值1000000000000000,该值由left-shifting 1(第15位)获得。
  3. 如果变量n的最高有效位为0,则k将包含一个值0,否则,它将包含一个非零值。
  4. 如果k包含0,则printf()将输出0,否则将输出1。
  5. 在循环的第二个go-around上,i的值减小,因此andmask的值改变,现在为100000000000000。这将检查下一个最高有效位是1还是0,并相应地打印出来。对数字中的所有位重复相同的操作。

如果需要十进制数字的二进制,那么本质上所有整数在计算机中实际上都是二进制的。只是将其转换为一个字符串,该字符串是使用printf和“%d”打印该值时该值的十进制表示。如果需要使用其他基数(例如,基数2或二进制),请提供适当的printf格式字符串(例如,十六进制的“%x”),或者仅构建该字符串并打印出来。

下面的代码可以在[2,36]中的任何基数中构建整数的字符串表示形式。

C


// C program to implement the
// above approach
#include <stdio.h>
#include <string.h>
char digits[] =
     "01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void reverse(char* start, char* end)
{
  for(end--; start < end; start++, end--)
  {
    char t = *start;
    *start = *end;
    *end = t;
  }
}
int base_change(int n,
                int base, char* buffer)
{
  int pos = 0;
   
  if (base > strlen(digits))
    return -1;
  while(n)   
  {
    buffer[pos] = digits[n % base];
    n /= base;
    pos++;
  }
   
  buffer[pos] = '\0';
  reverse(buffer, buffer + pos);
  return 0;
}
// Driver code
int main()
{
  char buffer[32];
  int conv = base_change(1024,
                         2, buffer);
  if (conv == 0)
    printf("%s\n", buffer);
  return 0;
}
输出
10000000000

说明:函数base_change()显示任何整数或字符值的二进制表示形式。现在,仅知道base_change()函数显示整数的二进制等效值就足够了。


相关用法


注:本文由纯净天空筛选整理自sambhav228大神的英文原创作品 showbits( ) Function in C with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。