C++按位运算

6.3 按位运算
6.3.1 位运算概述
符号描述运算规则实例
&两个位都为1时,结果才为1。0001&0001=1,0001&0000=0,0000&0000=0000
|两个位都为0时,结果才为0。0001
^异或两个位相同为0,相异为1。0001∧0001=0000,0001∧0000=1,0000∧0000=0
~取反0变1,1变0。∼0=1,∼1=0
<<左移各二进位全部左移若干位,高位丢弃,低位补0。0001<<k=0100,k=2,k kk是左移的位数,这里k = 2
>>右移各二进位全部右移若干位,对无符号数,高位补0,有符号数,右移补1 11。0100>>k=0001,k=2,k kk是右移的位数,这里k = 2
6.3.2 & 0xff 位运算

&表示按位与,只有两个位同时为1,才能得到1, 0x代表16进制数,0xff表示的数二进制1111 1111 占一个字节.和其进行&操作的数,最低8位,不会发生变化.

(1)只是为了取得低八位

out.write((message.length>>8)&0xff);//取高八位写入地址
out.write(message.length&0xff);//取低八位写入高地址中

例如,有个数字 0x1234,如果只想将低8位写入到内存中 0x1234&0xff
0x1234 表示为二进制 0001001000110100

0xff 表示为二进制 1111 1111

与操作 1&0 =0 1&1 =1 这样 0x1234只能保留低八位的数 0000000000110100 也就是 0x34

示例:对0x64 & 0x00000000FF 求值

​ 首先,需要了解一些基本概念和计算方式。ox64表示十六进制数64,0x00000000FF表示十六进制数FF,其中字母F代表15,因此十六进制数FF表示的十进制数为255。在进行位运算时,需要将数值转换为二进制数后进行计算。我们将分别对ox64和0x00000000FF进行二进制转换,并按位进行AND运算。

​ 首先,将ox64转换为二进制数:

​ 6 -> 0110 4 -> 0100

因此,ox64的二进制表示为01100100。

接下来,将0x00000000FF转换为二进制数: FF -> 11111111

按位进行AND运算,即对每一位进行比较并取值,得到以下结果:

01100100 AND 11111111 = -------- 01100100

因此,ox64 & 0x00000000FF等于01100100的二进制,转换为十六进制数为0x64,转换为十进制数为100。

因此,ox64 & 0x00000000FF等于100;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值