二进制运算基础

1、十六进制的表示
例子: 0xaa | 0x55。
将十六进制表示进行二进制运算,首先要把十六进制表示成二进制。规则是,两个十六进制位等于一个字节(8个二进制位),其实就是一个十六进制位占4个二进制位。
对于0xaa中的a为十进制中的10,用二进制表示就是1010,所以0xaa用二进制表示就是10101010.同理对于十六进制的5,也就是十进制的5,用二进制表示就是0101,所以0x55用二进制表示就是01010101.
那么0xaa | 0x55 = 11111111.
2、将一个十进制正数转化为一个二进制数表示。
3、负数左移
例子:-2 >> 1。
首先将负数的二进制表示写出:首先写出绝对值的二进制表示,然后取反+1.对于-2.绝对值为|-2| = 2,用二进制表示就是10,取反则为 1111..1101,再加1,则变成1111…1110.
对于有符号左移,直接移动,在高位补1,低位直接舍弃。则:1111…1111.
再将这个二进制结果转化成为十进制表示:除符号位以外,减一取反,则变为0000…0001.结果为它的绝对值 1.所以最后的结果为-1.
ps:位移操作只针对 int 和 long,对于 byte short char 需要先转化为 int,再进行位移操作。
4、无符号位移
例子:-2 >>> 1 。
无符号右移的特点就是,无论是正数还是负数,都是右边位舍弃,左边位补0.
上一题中-2的表示方式是1111…1110,无符号右移,则:0111…1111 = 2^31-1
注意到:有符号位移和无符号位移的区别,就是高位补0还是补1.所以没有无符号左移<<<.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值