注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小可尼の博客

Linux后端的技术窝窝

 
 
 

日志

 
 

C语言中位操作  

2013-08-14 21:04:57|  分类: C语言 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
出处:http://blog.chinaunix.net/uid-9727915-id-91299.html

位操作

计算机采用二进制是由计算机电路所使用的元器件性质决定的,计算机中采用了具有两个稳定的二值电路,二值电路只能表

示两个数码:0和1,用低点位表示“0”,用高电位表示“1”

进位计数制是人们利用符号来计数的方法,一种进位计数制包含一组数码符号和两个基本因素。
(1)数码:用不同的数字符号来表示一种数制的数值,这些数字符号称为”数码”。
(2)基:数制所使用的数码个数称为”基”。
(3)权:某数制每一位所具有的值称为”权”。

1. 二进制整数

 存储方式:以二进制方式存储在内存中
76543210 ->位数从高位到低位
01001001 -> 二进制表示形式
->数值1,2,4,8...以2的倍数增长

2. 有符号整数

高位决定正负值,其他七位表示数值
存储方式: 以二进制补码存放在内存中:(原码,反码,补码)
a) 原码等于负数绝对值的原码
b) 反码等于负数绝对值的原码的反码
c) 补码等于负数绝对值的源码的反码+1

3. 二进制浮点数

 存储方式:浮点数分两个部分存储,一个是二进制小数和一个二进制指数。
3.1 小数转换为二进制,如0.5转换为二进制为0.10,即0.5*2进1
二进制小数转换为十六进制 ,四位进1
3.2 浮点数表示
要在计算机中存放一个浮点数,需要流出若干个位,存放一个二进制小数,其他的存放一个指数。
数字的实际值是二进制小数部分成2的指定次幂

4. C的位运算符

   位逻辑运算符
1. 二进制反码或按位取反:~ (单目运算符)
可用于某些依赖于具体计算机字长的应用中,从而使代码是可移植的
如: x=x& ~0x7 ->0x7在内存中放入16bit加8个0,取反之后用&还原
2. 位与(&)
用来对一个数据的某个位置0
两个数都为真时才为真,其他未假
3. 位或(|)
用来对一个数据的某些二进制置1
两个数都为真或者有一个数位真,那么结果为真
4. 位异或(^)
用来检查两个位是否相等
两个都为真(两个都为假)时为假,其他情况都为真

5. 移位运算符

     1. << (左移)
左移运算符将其左侧操作数的值的每位向左移动,移动的位数由其右侧操作数指定,空出的为用0填充,丢弃左侧末端
      的位
2. >> (右移)
右移操作将其左侧操作数的值的每位向右移动,移动的位数由其右侧操作数指定,丢弃移出左侧操作数右端的位。
  • 增加位运算的应用
应用:( & )
  a. 清零特定位 (mask中特定位置0,其它位为1,s=s&mask)
  b. 取某数中指定位 (mask中特定位置1,其它位为0,s=s&mask)
应用:( | )
  a. 常用来将源操作数某些位置1,其它位不变。 (mask中特定位置1,其它位为0 s=s|mask)
应用:( ^ )
  a. 使特定位的值取反 (mask中特定位置1,其它位为0 s=s^mask)
  b. 不引入第三变量,交换两个变量的值 (设 a=a1,b=b1)
  评论这张
 
阅读(245)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018