获取二进制数中bit位的值示例(移位、与操作)

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”

一个字节通常包括8个位即1Byte=8Bit。我们可以将这8位从左到右看作是从7到0。在字节中,位7称为高位,为0称为低位

操作符:

1、and 操作,操作符“&”

定义:称为按位与运算符。它对整型参数的每一个二进制位进行布尔与操作,即两个对应的二进制位同时为1时,才等于1。

2、操作符“|”

定义:称为按位或运算符。它对整型参数的每一个二进制位进行布尔或操作,即两个对应的二进制位,任意一个为1时,就等于1。

3、操作符“^”

称为按位异或运算符。它对整型参数的每一个二进制位进行布尔异或操作,即两个对应的二进制位,有且仅有一个为1时,才等于1。

4、操作符“~”

定义:称为按位非运算符。它是一个单运算符,对运算数的所有二进制位进行取反操作。

5、操作符“<<”

定义:称为按位左移运算符。它把第一个运算数的所有二进制位向左移动第二个运算数指定的位数,而新的二进制位补0。将一个数向左移动N个二进制位相当于将该数乘以2的N次方

6、操作符“>>”

定义:称为按位右移运算符。它把第一个运算数的所有二进制位向右移动第二个运算数指定的位数。为了保持运算结果的符号不变,左边二进制位补 0 或 1 取决于原参数的符号位。如果第一个运算数是正的,运算结果最高位补 0;如果第一个运算数是负的,运算结果最高位补 1。将一个数向右移动N个二进制位相当于将该数除以2的N次方

以0开头的整数是八进制数

以0x开头的整数是十六进制数


下面是一个C++简单示例,我想取十进制 2 中 bit6-bit5 的值进行判断:

十进制 2 二进制表示为  0 0 0 0 0 0 1 0   (bit7 - bit0)高位在前 ,取 bit6-bit5 的值 0 0 0 0 0 0 1 0 

就是红色00,再 进行判断 (00-A  01-B 10-C 11-D)

vector<int> arr = {0, 1, 2};
int a = arr[2];

int P = a >> (5)) & 0x03;
string PB1 = "";
if(P == 0) {//00
   PB1 = "A ";
} else if(P == 1){//01
   PB1 = "B ";
} else if(PB1bit65 == 2){//10
   PB1 = "C ";
} else if(PB1bit65 == 3) {//11
  PB1 = "D ";
​​​​​​​}

0 0 0 0 0 0 1 0   >>5 (右移5位 )  0 0 0 0 0 0 1 0   灰色位去掉,原来的第五位就到了第0位。再 与操作  & 0x03  (0011)   就是取两位bit6和bit5 值为00, p=0   所以PB1 = A   

(取1位 就是 & 1 )

strcmp() 比较字符串
== 比较的是指针 不会相等

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值