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

问题描述:

要求写一个函数,实现,输入一个char,然后经过一系列的位变换,输出一个newChar
具体变换要求如下:变换要求

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:学艺不精,如有错误请指正

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值