打印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

相关文章
|
16小时前
|
C语言
【C语言刷题系列】交换整数的奇数位和偶数位
【C语言刷题系列】交换整数的奇数位和偶数位
|
4天前
|
C语言
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
|
8天前
|
算法
使用链式栈,实现十进制转八进制:键盘输入一个十进制数,经过链式栈的相关算法,输出八进制数
使用链式栈,实现十进制转八进制:键盘输入一个十进制数,经过链式栈的相关算法,输出八进制数
|
7月前
|
C语言
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换(C语言)
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换(C语言)
45 0
|
1月前
用一行代码(宏)交换一个二进制整数的奇数位和偶数位
用一行代码(宏)交换一个二进制整数的奇数位和偶数位
|
1月前
|
C语言
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
29 0
|
6月前
|
C语言
C语言第三十二弹---打印整数二进制的奇数位和偶数位
C语言第三十二弹---打印整数二进制的奇数位和偶数位
|
11月前
打印整数二进制的奇数位和偶数位
打印整数二进制的奇数位和偶数位
32 0
|
11月前
C语音:打印整数二进制的奇数位和偶数位
总体思路: (一). 输入数据 (二). 打印奇数位: 使用 for循环 循环产生 1~32 之间的偶数, 使用 移位操作符 移动偶数位,移动后就是奇数位, 这时再 按位与1 取出当前位, 进行打印。打印完奇数后进行 换行
|
C++
C++ 输出特定位数小数
C++ 输出特定位数小数
99 0