C++的位运算

(1<<8)&0xFF00


即 (1 * 2^8) & 0xFF00 = 0x0100 & 0xFF00 = 0x0100。


0x0001左移八位等于0x0100 再与上0xff00 结果为0x0100。。

只有这一句话只能这样了,意图可能是串行传数据,分离出每个bit位用的吧。。


 

位运算总共只有5种运算:与、或、异或、左移、右移。如下表:

与(&)0 & 0 = 01 & 0 = 00 & 1 = 01 & 1 = 1
或(|)0 | 0 = 01 | 0 = 10 | 1 = 11 | 1 = 1
异或(^)0 ^ 0 = 01 ^ 0 = 10 ^ 1 = 11 ^ 1 = 0
 a<<1左移运算,二进制的11,操作后为110,相当于乘2 
a>>1右移运算,二进制的111和110,操作后都为11,相当于除2 
a&b与运算,二进制的100与上110,操作后为100,也就是按位与
 a|b或运算,二进制的100或上110,操作后为110,也就是按位或 
a^b异或运算,二进制的100异或110,操作后为010,也就是按位异或

如何提取二进制的某一位

求10(1010)的第三位数
10>>(3-1)&1=1

C++中int类型的变量固定为4个字节,&后面的1表示int型32位,比特位 0-31,从0开始取位
int类型变量初始值一般为0,范围[-2^31 , 2^31 -1] 即 [-2147483648,2147483647]


整型常量有3种表示方式: 
①十进制整数。例如,123、-2、0。 
②八进制整数
八进制英文是Octal,缩写OCT或O,O与0外形相近,C语言就借用了数字0来表示8进制数,这是不能省略的。
例如,012,等于十进制数10。 
③十六进制整数。
以ox或0x开头的整数是十六进制数,十六进制的英文是hexadecimal,怎么不用0H呢?不知道是不是从希腊文借用而来。也可以用H表示十六进制的。
例如,0xff01,等于十进制1
如果在整型常量后面加上字母u或u,则表示无符号整数(unsigned int)。例如,123U或123u是unsigned int型的。如果在整型常量后面加上一个字母L或l,则表示长整数(10ngint)。例如123l是long int型的。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值