用C语言实现对一个char字符的位操作

问题描述:

要求写一个函数,实现,输入一个char,然后经过一系列的位变换,输出一个newChar
具体变换要求如下:用C语言实现对一个char字符的位操作_第1张图片

char changeChar(void)
{
 char ch = 0 ;
 char newChar = 0;
 char temp[7];//临时变量
 printf("请输入ch:");
 scanf("%d",&ch);
 //itoa()函数是一个进制转换函数
 printf("原来的ch的二进制:%s\n",itoa(ch,temp,2));
 int str[7];
 
 //将char中的每一位分离到str数组中
 for(int j =0;j<=7;j++)
 {
  //化成二进制时,从右数是第几位就像右边移动几位(注意:下标从零开始)然后在与上1
  str[j] = (ch>>j)&1;  //移位操作符
 }
 
  int newStr[7];
  //对原有的每一位进行按要求的具体操作
  //根据要求不同,可以有不同的变换
  newStr[0] = str[1];
  newStr[1] = str[0];
  newStr[2] = str[3];
  newStr[3] = str[4];
  newStr[4] = str[5];
  newStr[5] = str[2];
  newStr[6] = str[6];
  newStr[7] = str[7];
  //将新的位变换后的转变成char
 for(int k = 0;k<=7;k++)
  newChar = newChar +newStr[k]*pow(2,k);
 printf("newChar的二进制表达:%s\n",itoa(newChar,temp,2));
 printf("newChar:%d\n",newChar);
 return newChar;  //范围newChar
 
}

总结

要直接对char的每一位进行操作难以实现,因此,选用先将char中的每一位提取到一个数组中,然后在数组中进行变换,最后又转换成char便很容易实现了

PS:学艺不精,如有错误请指正

你可能感兴趣的:(C语言,位操作)