C语言基础之位运算(一)

您所在的位置:网站首页 1按位或-48 C语言基础之位运算(一)

C语言基础之位运算(一)

2023-04-04 04:26| 来源: 网络整理| 查看: 265

C语言基础之位运算(一) C语言基础之位运算(二) C语言基础之位运算(三)

内存存储的基本单位

1 和 0是计算机存储的基本单元,在计算机设备中看到的所有一切都是1和0两个数组成的,一个即一个位,即二进制中的一个数位,8位(bit)一个字节;反过来说,就是1字节是8位的数据,可以表示0-255共256个数字,即1Byte(字节) = 8Bit(位)。

1、按位与 & 1.1、描述: 位与时,两个操作数是按二进制位彼此对应位相与; 若同为 1 则结果为 1;否则结果为 0; 1.2、真值表: 1&1=1;1&0=0;0&1=0;0&0=0; 1.3、特点: 与1位与无变化;与0位与变为0; 清零,任何数和0相与,结果为0; 若要取出指定位的值,取哪一位,就把对应的位定为1; 1.4、举例: 对于16位二进制数据data = 0000 1010 1110 0111;如何取出result数据的低4位 ?

// 0x000f = 0000 0000 0000 1111 // 通过按位与上data后,得到result = 0000 0000 0000 0111,就得到低4位数据0111; int result = data & 0x000f;

2、按位或 | 2.1、描述: 位或时,两个操作数是按二进制位彼此对应位相或; 只要有一个为 1 则结果为 1;否则结果为 0; 负数按补码的形式参加按位或运算; 2.2、真值表: 1 | 1=1;1 | 0=1;0 | 1=1;0 | 0=0; 2.3、特点: 与1位或变成1,与0位或无变化; 将数据的某些位,置为1; 2.4、举例: 2.4.1、计算10进制数据2和3的按位或

2 | 3 // 十进制 0000 0010 // 2 的二进制 0000 0011 // 3 的二进制 0000 0011 // 按位或的二进制结果,所以转为10进制就是3

2.4.2、将data = 1111 0000的低4位置为1

1111 0000 0000 1111 1111 1111 // 低4位置位1的结果

3、按位取反 ~ 3.1、描述: 将操作数的二进制位逐个取反; 即0变1,1变0; 3.2、特点: 配合按位与把一个数的指定位设置为0 3.3、举例: 3.3.1、对10进制数2位取反,即~2

data = 0000 0010 result = 111 1101 // 位取反后的结果

3.3.2、将data = 1000 1111按位与(~1)

1000 1111 // data 1111 1110 // ~1 即 ~(0000 0001) 1000 1110 // result = data & ~(1),此时data最低一位置为了0

4、按位异或 ^ 4.1、描述: 若对应的位不同则为1;对应位相同则为0; 即异或就是相异为1,相同则为0; 4.2、真值表: 1^1=0; 0^0=0; 1^0=1; 0^1=1; 4.3、特点: 特定位翻转,哪一位需要翻转就把对应的位设置为1; 任何值和0异或,原值保持不变; 异或运算可以交换位置;如:1^2^3 == 2^1^3 相同的数异或等于0:1^1==0; a^b^a ==b; 4.4、举例: 计算10进制数2^3的结果

2 ^ 3 0000 0010 0000 0011 0000 0001 // 2 ^ 3的结果为1

5、左移运算 > 4;

写在最后

iOS蓝牙通信数据处理,位运算,数据的大小端转换



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3