2017年2月5日

    xiaoxiao2021-03-26  21

    嵌入式学习——C语言学习:

    今天学习了“位”的有关内容,练习了一个程序。程序要求:输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果

    #include <stdio.h>

    int fun(int num); int main() {     int num;         printf("Enter your  number :\n");        //提示用户输入变量  scanf("%d",&num);  printf("The number after function is %d .\n",fun(num));     //调用函数并输出函数返回值     return 0;    } int fun(int num) {  int temp,number = 0xffff;        //定义中间变量temp,初始化结果值  int i;  for(i = 0;i < 32; i++)        //利用循环对参数进行运算  {   if(i == 0 || i == 31)        //对于第一位和最后一位采用不同算法取值   {    temp = (num >> 1) & 0x0000;   }   else                         //对于其他变量等于其前一位和后一位相与   {                                               temp = (num >> (i + 1)) & (num >> (i - 1));           }   temp = temp & 0x0001;      if(temp)          //对于置位数不同的情况分开考虑      {       temp = (temp << i);       number = number | temp;      }      else      {       temp = ~(1 << i);       number = number & temp;   }  }     return number; }

    转载请注明原文地址: https://ju.6miu.com/read-660501.html

    最新回复(0)