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

相关文章
|
算法
【Leetcode -405.数字转换为十六进制数 - 409.最长回文串】
【Leetcode -405.数字转换为十六进制数 - 409.最长回文串】
49 0
|
C语言
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换(C语言)
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换(C语言)
77 0
|
7月前
|
C语言
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
|
7月前
|
算法
使用链式栈,实现十进制转八进制:键盘输入一个十进制数,经过链式栈的相关算法,输出八进制数
使用链式栈,实现十进制转八进制:键盘输入一个十进制数,经过链式栈的相关算法,输出八进制数
|
8月前
用一行代码(宏)交换一个二进制整数的奇数位和偶数位
用一行代码(宏)交换一个二进制整数的奇数位和偶数位
|
8月前
|
C语言
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
56 0
打印整数二进制的奇数位和偶数位
打印整数二进制的奇数位和偶数位
67 0
C语音:打印整数二进制的奇数位和偶数位
总体思路: (一). 输入数据 (二). 打印奇数位: 使用 for循环 循环产生 1~32 之间的偶数, 使用 移位操作符 移动偶数位,移动后就是奇数位, 这时再 按位与1 取出当前位, 进行打印。打印完奇数后进行 换行
109 0
|
C++
C++ 输出特定位数小数
C++ 输出特定位数小数
154 0
一个数字的二进制数字里的一的个数(负数用补码)
这是一种解决问题的函数,缺点,会有死循环,((int)pow(-2, i))这个值的结果是整形永远达不到那个数字2147483648,我们必须自己规定那个数字
58 0