/* 在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序。
          ********************
          操作符 * 作用
          ********************
              &  * 位与     1 & 1 = 1; 1 & 0 = 0; 0 & 0 = 0;
              |  * 位或        1 | 1 = 1; 1 | 0 = 1; 0 | 0 = 0;
              ^  * 位异或   1 ^ 1 = 0; 0 ^ 1 = 1; 0 ^ 0 = 0;
              ! * 位反     ! 1 = 0; ! 0 = 1;
              >> * 右移         01011 >> 1 = 0101;
              << * 左移         01011 << 1 = 1011;
          ********************
        按位运算是对字节或字中的实际位进行检测、设置或移位, 它只适用于字符型和整数型变量以及它们的变体, 对其它数据类型不适用。
        我们要注意区分位运算和逻辑运算。
*/
//我们先来做一些练习熟悉位运算
/*由于不同位的计算机系统和编译器存储时字节数会不同,本文所有操作都在64位系统和32位编译器下执行的*/

# include<stdio.h>
void main()
{      int x;                       //计算整数x的二进制表示中1的个数     printf("请输入一个数\n");      scanf("%d",&x);      int count=0;      while(x)      {          count ++;          x=x & (x-1);       }       printf("%d\n",count);
}

下面再来做几个小练习: 

void main()
{int i; printf("输入要操作的数i\n"); scanf("%d",&i); i = i >> 1;                   //去掉最后一位  i = i << 1;                   //往最后一位加0  i = i << 1;i=i | 1;           //往最后一位加1   i = i | 1;                    //把最后一位变成1 i = i >> 1;i=i << 1;          //把最后一位变成0 i = i ^ 1;                    //最后一位取反 int k; printf("请输入k\n"); scanf("%d",&k); i = i | (1 << (k-1));             //把右数第K位变为1 i = i & ( ~ (1 <<  (k-1)));       //把右数第K位变为0 i = i ^ (1 << (k-1));             //把右数第k位取反 i = i & 0x00000007;               //取末尾三位 i = i & (0x7fffffff >> (31-k));   //取末尾k位 i = (i >> (k-1) & 1);             //取右数第k位 i = i & (i+1);                    //把右边连续的1变为0  i = i | (i+1);                    //把右边第一个0变为1 i = i | (i-1);                    //把右边连续的0变为1
}

要完成上面的操做方法有很多种,这是我自己想的一些解决办法。

下面我们就用位运算来完成float型到int型的强转。
注:要完成此函数得先理解float型和int型的二进制存储形式。float:1个符号位、8个指数位、23个尾数位

int float_to_int(float f)
{ int *p = (int *)&f; int temp = *p; int sign= -1;              //判断符号位 if((temp & 0x80000000) == 0) {  sign = 1; } int exp = ((temp >> 23) & ox000000ff) - 127;//求出指数位 int tail = (temp & 0x007fffff) | 0x00800000;//求出尾数位 int res  = tail >> (23 - exp);              //求出有效数字 return sign * res;                          //返回整数
}

//针对上面的代码,我们对位运算有加深了印象。位运算的大体操作我们都基本作完了,掌握上面的运算就基本掌握了位运算。

C语言实现float类型到int类型的转化(位运算基础知识)相关推荐

  1. 【c语言】float强制转换为int类型

    <程序设计基础-c语言>杨莉 刘鸿翔 科学出版社 ISBN 978-7-03-032903-5 p36 [例2.10] 强制类型转换 #include<stdio.h> voi ...

  2. Java object类型转换为int类型

    在struts1的action类中设置了String类型的变量,int类型的变量,把他们放在request中,在jsp页面获取的时候object类型装换位int类型,(Integer)request. ...

  3. java中long类型转换为int类型

    由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参考: 一.强制类型转换 [java] l ...

  4. java把string转换为int_java如何把String类型转换为int类型

    在java中,实现String类型转换为int类型的方法有:Integer.parseInt(String)方法.Integer.valueOf(String)方法. 本篇文章就给大家介绍java把S ...

  5. char类型转int类型

    char类型转int类型 代码示例 原理 代码示例 char a = '1';int x = a - '0'; 原理 原理是用的ASCILL码.char类型减去一个char类型的'0'就可以转成int ...

  6. java把string转int类型_java把String类型转换为int类型的方法

    java把String类型转换为int类型的方法 发布时间:2020-08-20 14:32:03 来源:亿速云 阅读:73 作者:小新 这篇文章将为大家详细讲解有关java把String类型转换为i ...

  7. Date类型转int类型

    由于有些mysql数据库中存储的是int类型,所以进行条件筛选时需要进行处理.将需要的日期转换为int类型进行比较. Date类型转int类型: Integer date = Integer.valu ...

  8. java string 转换 int_java如何把String类型转换为int类型

    在java中,实现String类型转换为int类型的方法有:Integer.parseInt(String)方法.Integer.valueOf(String)方法. 本篇文章就给大家介绍java把S ...

  9. char类型与int类型的转换

    在c语言中,char类型与int类型可以转换,如何转换我在此做一个粗略的总结 首先是char转换为int #include <stdio.h> int main() {char a ;a ...

最新文章

  1. django 限制匿名用户访问以及重定向
  2. WWW 2021 | Radflow: 可进行数十万节点的多变量时序预测模型
  3. Elasticsearch Transient与Persistent的区别
  4. mysql数据库的优缺点
  5. Maven搭建SpringMVC+Mybatis项目详解【转】
  6. 2019最新Python爬虫高频率面试题总结(一)
  7. 华为手机获取状态栏高度是错误的_你的华为手机状态栏有HD图标吗?这又代表着什么?看完你就懂了...
  8. 4-10:TCP协议之面向字节流和粘包问题
  9. Jenkins时区设置为北京时间
  10. MSP430杂谈--AD7793硬件SPI驱动与模拟SPI驱动
  11. Python学习之==线程进程
  12. Android核心分析之二十五Android GDI之共享缓冲区机制
  13. 进击的序列帧 一(两篇)------- 让你的序列帧立体起来!
  14. Windows Server 2008 R2 企业版操作说明手册
  15. 12款高质量的免费 HTML 网页模板下载
  16. C++ ACM程序设计大赛--练习1
  17. java实现咖啡店模拟_装饰者模式学习:模拟咖啡馆的点单系统来剖析装饰者模式的使用 + 装饰者模式在java I/O 中的应用...
  18. 计算机电源德国产,德国原装崇拜者来一发?BeQuiet! Straight Power 11全模电源
  19. springboot集成微信和QQ第三方登录
  20. 《Kotin 极简教程》第14章 使用 Kotlin DSL

热门文章

  1. CSS - 移动端布局(一)关键的前置知识
  2. python 函数式编程包_Python——详解函数式编程与闭包
  3. 约瑟夫环问题- leetcode 1823. 找出游戏的获胜者
  4. 编译mbedtls (mingw方式)
  5. 关系模式的完整性约束
  6. MySQL锁表了怎么办?
  7. opencv 图像拼接
  8. MySQL 闪回原理与实战
  9. 【拒绝花里胡哨】运维实用手册shell篇(无废话,全程暴力干货)
  10. Linux云服务器:MySQL安装失败、多种错误总结