ToB企服应用市场:ToB评测及商务社交产业平台

标题: 逍遥自在学C语言 | 位运算符>>的高级用法 [打印本页]

作者: tsx81428    时间: 2023-4-17 01:22
标题: 逍遥自在学C语言 | 位运算符>>的高级用法
前言

在上一篇文章中,我们介绍了 运算符的一些高级用法。

一、人物简介



二、优化除法运算

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a = 1024;
  5.     int b = a / 8; // 整除8
  6.     int c = a >> 3; // 相当于除以8
  7.     printf("b = %d, c = %d\n", b, c);
  8.     return 0;
  9. }
复制代码

三、获取字节序

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     short int i = 0x1234; // 假设i在内存中的地址为0x1000
  5.     char *p = (char *)&i; // 将i的地址转换为字符型指针,即指向0x1000的字节型指针
  6.     if (*p == 0x12) // 判断*p的值是否等于0x12,如果等于则为大端序,否则为小端序
  7.     {
  8.         printf("大端序\n");
  9.     }
  10.     else
  11.     {
  12.         printf("小端序\n");
  13.     }
  14.     return 0;
  15. }
复制代码

四、提取二进制数的某一位

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a = 0b1011;
  5.     int b = (a >> 2) & 1; // 提取a的第二位,即0
  6.     printf("第二位的值为 %d\n", b);
  7.     return 0;
  8. }
复制代码

五、提取二进制数的多个连续位

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a = 0b1011011;
  5.     int b = (a >> 3) & 0b111; // 提取a从第3位开始的3位,即101
  6.     printf("b = %d\n", b);
  7.     return 0;
  8. }
复制代码

六、浮点数向下舍入为整数

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     float x = 3.1415926;
  5.     int a = (int)(x * 1000.0f) >> 10; // 将x乘以1000并向下取整
  6.     printf("向下取整后的数值为 %d\n", a);
  7.     return 0;
  8. }
复制代码

小结

通过这篇文章,我们学会了用位运算符>>的5种高级用法
1、优化除法运算
2、获取字节序
3、提取二进制数的某一位
4、提取二进制数的多个连续位
5、浮点数向下舍入为整数
<blockquote>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4