//第一次尝试:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //void PrintOE(int num,int arro[16],int arre[16]) { // int num1 = 1; // int num2 = 2; // for (int i = 0; i < 16; i++,num1=num1<<2) { // if ((num & num1) == num1) { // arro[i] = 1; // } // else { // arro[i] = 0; // } // } // for (int i = 0; i < 16; i++, num2 = num2 << 2) { // if ((num & num2) == num2) { // arre[i] = 1; // } // else { // arre[i] = 0; // } // } //} // //void Print(int arro[16], int arre[16]) { // for (int i = 15; i >= 0; i--) { // printf("%d", arro[i]); // } // printf("\n"); // for (int i = 15; i >= 0; i--) { // printf("%d", arre[i]); // } //} void PrintEO(int num) { for (int i = 31; i > 0; i-=2) { printf("%d", (num >> i) & 1); } printf("\n"); for (int i = 30; i >= 0; i-=2) { printf("%d", (num >> i) & 1); } } int main() { /*int arro[16] = { 0 }; int arre[16] = { 0 };*/ printf("请输入一个数:"); int num = 0; scanf("%d", &num); //PrintOE(num,arro,arre); //Print(arro, arre); PrintEO(num); return 0; } //一开始以为编译器中是算术右移,会影响计算结果所以使用了一串很长的代码才实现功能 //后来想了一下,我只需要将我需要的那一位移动到第一位,然后和1与即可,其他位不管怎么变化都不影响结果
//于是使用了更简便的代码实现了功能
原文:https://www.cnblogs.com/zhm521/p/13927131.html