打印2进制位数的奇数位和偶数位

简介: 打印2进制位数的奇数位和偶数位

前言

主要学习2进制输出方式


1.题目:

获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列。

分析:

打印一个整数的二进制位中的偶数位和奇数位,可以对整数进行移位操作(反向打印),再将移位的二进制位与1进行&操作,


案例1


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
  int n = 0;
  scanf("%d", &n);
  printf("2进制:\n");
  for (int i = 32; i >= 0; i--) {
  printf("%d ", (n >> i) & 1);
  //反向打印
  }
  printf("\n奇数位:\n");
  for (int i = 31; i >= 0; i -= 2) {
  printf("%d ", (n >> i) & 1);
  }
  printf("\n偶数位:\n");
  for (int i = 32; i > 0; i -= 2) {
  printf("%d ", (n >> i) & 1);
  }
  return 0;
}



输出结果:

a4148ca539cb41948d7260bd44f51163.png



be08f906208f4c01af78f1617969656f.png

案例2


#include<stdio.h>
void Print(int n)
{
  int i = 31;
  printf("二进制位:");
  while (i >= 0)
  {
  printf("%d ", (n >> i) & 1);
  i--;  //此处是使结果正向打印
  }
  printf("\n");
  printf("奇数位:");
  for (i = 30; i >= 0; i-=2)  //此处是使结果正向打印
  {
  printf("%d ", (n >> i) & 1);
  }
  printf("\n");
  printf("偶数位:");
  for (i = 31; i >= 1; i -= 2)  //此处是使结果正向打印
  {
  printf("%d ", (n >> i) & 1);
  }
  printf("\n");
}
int main()  //获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
{
  int a = 0;
  scanf("%d", &a);
  Print(a);
    return 0;
}


输出结果:

ed773024bccf4ee3af3913c38ebec313.png

相关文章
|
C语言
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换(C语言)
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换(C语言)
61 0
|
5月前
|
C语言
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
|
6月前
用一行代码(宏)交换一个二进制整数的奇数位和偶数位
用一行代码(宏)交换一个二进制整数的奇数位和偶数位
|
6月前
|
C语言
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
47 0
打印整数二进制的奇数位和偶数位
打印整数二进制的奇数位和偶数位
55 0
C语音:打印整数二进制的奇数位和偶数位
总体思路: (一). 输入数据 (二). 打印奇数位: 使用 for循环 循环产生 1~32 之间的偶数, 使用 移位操作符 移动偶数位,移动后就是奇数位, 这时再 按位与1 取出当前位, 进行打印。打印完奇数后进行 换行
100 0
进制转换--(2-8)为什么2的3次方=8,所以三位变一位
进制转换--(2-8)为什么2的3次方=8,所以三位变一位
一个数字的二进制数字里的一的个数(负数用补码)
这是一种解决问题的函数,缺点,会有死循环,((int)pow(-2, i))这个值的结果是整形永远达不到那个数字2147483648,我们必须自己规定那个数字
49 0
求整数的位数及各位数字之和
求整数的位数及各位数字之和
99 0
|
算法
C生万物 | 使用宏将一个整数的二进制位的奇数位和偶数位交换
妙用位运算【按位与、按位或、移位】,交换一个二进制位的奇偶数位
118 0
C生万物 | 使用宏将一个整数的二进制位的奇数位和偶数位交换