二进制位运算---左移(<<)右移(>>)

(1).二进制中负数的计算

负数以正数的补码表示

原码:一个整数按照绝对值的大小转化成二进制的数

反码:将二进制数按位取反

补码:反码加 1

以-14 举例

原码:14 即 00000000 00000000 00000000 00001110

反码: 11111111 11111111 11111111 11110001

补码: 11111111 11111111 11111111 11110010

所以-14 的二进制是 11111111 11111111 11111111 11110010

假设 我们得到 二进制让我们求整数 就是倒着来取相反数

如二进制是 11111111 11111111 11111111 11110010

得到反码减1 11111111 11111111 11111111 11110001

原码: 00000000 00000000 00000000 00001110

即 1110 = 14 所以取反 就是-14

(2).<<左移运算符

1.将一个运算对象的各二进制位全部左移若干位(左边的二进制丢弃,右边补0)

(注意:java中 整数位 32位)

11 << 2 = 44

-14 <<2 =-56

-14的二进制(11111111 11111111 11111111 11110010)左移2位 为
11111111 11111111 11111111 11001000 结果为(-56)
【补充】:对于左移,直观的理解为,对于正数来说,左移相当于乘以2(但效率比乘法高);对于负数来说,没有直观的理解。

(3).>>右移运算符

将一个运算对象的各二进制位全部右移若干位,正数左补0,负数左补1.

4 >> 2 = 1;

-14 >> 2 = -4;
【补充】:对于右移,直观的理解为,对于正数来说,右1移相当于除以2(但效率比除法高);对于负数来说,没有直观的理解。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、二进制:所谓二进制就是逢二进一 (0,1), 因为使用二进制只有 0, 1 两个数,简单,易于电子方式实现 ...
    hello大象阅读 8,842评论 0 1
  • 二进制转十进制 0011 10012^(6-1) + 2^(5-1) + 2^(4-1) + 2^(1-1) = ...
    u14e阅读 5,090评论 0 1
  • 位运算符 位运算符主要针对两个二进制数的位进行逻辑运算,它包括:与(&)、或(|)、非(~)、异或(^)**运算规...
    深情不及酒伴阅读 4,729评论 0 1
  • 在学习源码中,发现有大量使用位运算符,这样做的目的是为了节约内存开销和加快计算效率。 位运算符,这个"位"代表这什...
    杨杰C阅读 4,979评论 0 0
  • 论文翻译--深度学习特征表示与医学图像分析的多重实例学习 DEEP LEARNING OF FEATURE REP...
    苏苏苏不想起床阅读 3,821评论 0 0