位操作之创建掩码实现二进制转换

编程入门 行业动态 更新时间:2024-10-11 19:23:42

位操作之创建<a href=https://www.elefans.com/category/jswz/34/1704437.html style=掩码实现二进制转换"/>

位操作之创建掩码实现二进制转换

位操作之创建掩码实现二进制转换

位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算

例如

int i = 1;
i = i << 2;    //把i里的值左移2位
  1. 也就是说1的2进制是000…0001
这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0
  1. 左移2位之后变成 000… 0100,也就是10进制的4
  2. 所以说左移1位相当于乘以2
  3. 那么左移n位就是乘以2的n次方了
/** @Author: Your name* @Date:   2020-03-06 21:35:52* @Last Modified by:   Your name* @Last Modified time: 2020-03-06 21:43:06*/
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
char *convert(int n,char *string);
void showall(char *string1);
int showbitinverse(int num,int n);
int main()
{char BIT[CHAR_BIT * sizeof(int) + 1];int num;puts("Please enter one integer to continue.");while(scanf("%d",&num)==1){convert(num,BIT);showall(BIT);putchar('\n');num = showbitinverse(num,4);puts("Here are the inverse interge.");showall(convert(num,BIT));puts("\n");}puts("Bye.");return 0;
}
char *convert(int n,char *string)
{const static int SIZE = CHAR_BIT * sizeof(int);int i;for(i = SIZE- 1;i>=0;i--,n>>=1){string[i] = (01&n) + '0';//取出n的某一位}string[SIZE] = '\0';//注意是带斜杠,表示结束return string;
}
void showall(char *string1)
{int i = 0;while(string1[i]){putchar(string1[i]);if(++i % 4==0 &&string1[i]){putchar(' ');}}
}
int showbitinverse(int num,int n)
{int MASK = 0;int bitval = 1;while(n--){MASK |=bitval;bitval<<=1;  }return num^MASK;
}

结果如下:

更多推荐

位操作之创建掩码实现二进制转换

本文发布于:2023-07-27 22:09:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1226449.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:掩码   操作

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!