zoukankan      html  css  js  c++  java
  • C语言位操作

    计算机采用二进制是由计算机电路所使用的元器件性质决定的,计算机中采用了具有两个稳定的二值电路,二值电路只能表示两个数码:0和1,用低点位表示“0”,用高电位表示“1”进位计数制是人们利用符号来计数的方法,一种进位计数制包含一组数码符号和两个基本因素。

    (1)数码:用不同的数字符号来表示一种数制的数值,这些数字符号称为”数码”。

    (2)基:数制所使用的数码个数称为”基”。

    (3)权:某数制每一位所具有的值称为”权”。

     

    1. 二进制整数

    存储方式:以二进制方式存储在内存中

    76543210 ->位数从高位到低位

    01001001 -> 二进制表示形式

    ->数值1,2,4,8...以2的倍数增长

     

    2. 有符号整数

    高位决定正负值,其他七位表示数值

    存储方式: 以二进制补码存放在内存中:(原码,反码,补码)

    (1. 原码等于负数绝对值的原码

    (2. 反码等于负数绝对值的原码的反码

    (3. 补码等于负数绝对值的源码的反码+1

     

    3. 二进制浮点数

    存储方式:浮点数分两个部分存储,一个是二进制小数和一个二进制指数。

    (1. 小数转换为二进制,如0.5转换为二进制为0.10,即0.5*2进1

    二进制小数转换为十六进制 ,四位进1

    (2. 浮点数表示

    要在计算机中存放一个浮点数,需要流出若干个位,存放一个二进制小数,其他的存放一个指数。

    数字的实际值是二进制小数部分成2的指定次幂

     

    4. C的位运算符

    位逻辑运算符

    (1. 二进制反码或按位取反:~ (单目运算符)

    可用于某些依赖于具体计算机字长的应用中,从而使代码是可移植的

    如: x=x& ~0x7 ->0x7在内存中放入16bit加8个0,取反之后用&还原

    (2. 位与(&)

    用来对一个数据的某个位 置0

    两个数都为真时才为真,其他为假

    (3. 位或(|)

    用来对一个数据的某些二进制位 置1

    两个数都为真或者有一个数位真,那么结果为真

    (4. 位异或(^)

    用来检查两个位是否相等

    两个都为真(两个都为假)时为假,其他情况都为真

     

    5. 移位运算符

    (1. << (左移)

    左移运算符将其左侧操作数的值的每位向左移动,移动的位数由其右侧操作数指定,空出的位用0填充,丢弃左侧末端的位

    (2. >> (右移)

    右移操作将其左侧操作数的值的每位向右移动,移动的位数由其右侧操作数指定,丢弃移出左侧操作数右端的位。

     

    增加位运算的应用

    1.应用:( & )

    a. 清零特定位 (mask中特定位 置0,其它位为1,s=s&mask)

    b. 取某数中指定位 (mask中特定位 置1,其它位为0,s=s&mask)

     

    2. 应用:( | )

    a. 常用来将源操作数某些位 置1,其它位不变。 (mask中特定位 置1,其它位为0,s=s|mask)

     

    3. 应用:( ^ )

    a. 使特定位的值取反 (mask中特定位 置1,其它位为0,s=s^mask)

    b. 不引入第三变量,交换两个变量的值 (设 a=a1,b=b1)

  • 相关阅读:
    2019 SDN上机第1次作业
    团队Git现场编程实战
    团队项目-需求分析报告
    第二次结对编程作业
    老学长的TODOLIST
    离散化
    某大佬的TODOLIST
    第一次个人编程作业
    第一次博客作业
    第一次个人编程作业
  • 原文地址:https://www.cnblogs.com/bluestorm/p/2304114.html
Copyright © 2011-2022 走看看