二进制的神奇

0xaaaaaaaa = 10101010101010101010101010101010-------------------偶数位为1,奇数位为0
0x55555555 = 1010101010101010101010101010101 --------------------偶数位为0,奇数位为1
0x33333333 = 110011001100110011001100110011 ------------------------1和0每隔两位交替出现
0xcccccccc = 11001100110011001100110011001100-----------------------0和1每隔两位交替出现
0x0f0f0f0f = 00001111000011110000111100001111 -------------------------1和0每隔四位交替出现
0xf0f0f0f0 = 11110000111100001111000011110000 -------------------------0和1每隔四位交替出现

0x01010101 = 1000000010000000100000001 -------------------------------先来个1,接着7个0和一个1交替出现。

((x >> 1) & 0x55555555); --- 先右移一位,等于拿到奇数位

((x & 0x55555555) << 1 --- 奇数位移到偶数位

太神奇了!!!!!!

有时候CSP初赛会考的,这个要记啊啊啊啊啊!!!

以下是一些有趣的、神奇的 C 语言代码: 1. 计算器 这段代码可以实现一个简单的计算器功能,用户输入两个数字和一个操作符,程序会返回计算结果。 ```c #include<stdio.h> int main() { char op; float num1,num2,result; printf("Enter the operator (+, -, *, /): "); scanf("%c",&op); printf("Enter two numbers: "); scanf("%f%f",&num1,&num2); switch(op) { case '+': result=num1+num2; break; case '-': result=num1-num2; break; case '*': result=num1*num2; break; case '/': result=num1/num2; break; default: printf("Invalid operator"); return 0; } printf("%.2f %c %.2f = %.2f",num1,op,num2,result); return 0; } ``` 2. 斐波那契数列 这段代码可以生成斐波那契数列的前 n 项。 ```c #include<stdio.h> int main() { int n, i, t1 = 0, t2 = 1, nextTerm; printf("Enter the number of terms: "); scanf("%d", &n); printf("Fibonacci Series: "); for (i = 1; i <= n; ++i) { printf("%d, ", t1); nextTerm = t1 + t2; t1 = t2; t2 = nextTerm; } return 0; } ``` 3. 倒计时 这段代码可以实现一个简单的倒计时功能,用户输入一个时间,程序会倒计时到 0。 ```c #include<stdio.h> #include<unistd.h> int main() { int sec; printf("Enter number of seconds: "); scanf("%d",&sec); while(sec>=0) { printf("Time remaining: %d seconds\n",sec); sleep(1); sec--; } printf("Time's up!"); return 0; } ``` 4. 十进制转二进制 这段代码可以将一个十进制数转换为二进制数。 ```c #include<stdio.h> int main() { int num,rem,i=0; int binary[20]; printf("Enter a decimal number: "); scanf("%d",&num); while(num>0) { rem=num%2; binary[i]=rem; i++; num=num/2; } printf("Binary equivalent: "); for(i=i-1;i>=0;i--) { printf("%d",binary[i]); } return 0; } ``` 5. 打印自己的源代码 这段代码可以打印出自己的源代码。 ```c #include<stdio.h> int main() { FILE *fp; char c; fp=fopen(__FILE__,"r"); do { c=getc(fp); putchar(c); } while(c!=EOF); fclose(fp); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值