我是靠谱客的博主 彪壮树叶,最近开发中收集的这篇文章主要介绍二进制位运算 左移与右移,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

(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(但效率比除法高);对于负数来说,没有直观的理解。



作者:Ferrari1001
链接:https://www.jianshu.com/p/19ed5ff6a945
来源:简书
 

最后

以上就是彪壮树叶为你收集整理的二进制位运算 左移与右移的全部内容,希望文章能够帮你解决二进制位运算 左移与右移所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部