java位运算

编程技术  /  houtizong 发布于 3年前   59
   java位运算主要是用来对二进制进行操作,主要的位运算包括>>,<<,>>>,&,|,^,~ .java的二进制是采用补码(最高阶0表示正 ,1表示负,对正数来说,最高位为0,其余各位代表数值本身,如 +22的补码 为00010110。 对负数而言最高位1,把该数绝对值的补码按位取反 然后对整个数加1,即得该数的补码,如 -22的补 码 为11101010(00010110 按位取反11101001 +1=11101010))的方式进行表示.
    1, >>  右移(带符号【移动的时候带上原来的符号】)
    a>>b 表示a向右移动b位,低阶去掉,高阶用原来最高阶补充(即如果原来最高位0,则高位补0),
    例如: 12>>2   即00001100--->00000011(3)
         -12>>2   即11110100--->11111101(-3)
    2, <<  左移(带符号)
    a<<b 表示a向左移动b位,高阶去掉,低阶用0补充。
    例如: 12<<2   即00001100--->00110000(48)
         -12<<2   即11110100--->11010000(-48)
         
    3, >>> 右移(无符号【移动的时候不带上原来的符号】)
    由于>>>是无符号的,所以每次移动最高位用0表示,所以>>>结果一定是正数(除0),即正数的>>>跟>>结果是一样的
    例如: 12>>>2 即00001100--->00000011(3)
         -12>>>2 即11110100--->00111101 (1073741821)

    4, &  按位与
       如果两个运算数都是1,则结果为1。其他情况下,结果均为零
       例如:01010001&11000011结果为:01000001
    5,|  按位或
       任何一个运算数为1,则结果为1
       例如:01010001|11000011结果为: 11010011
    6, ^ 按位异或
       只有在两个比较的位不同时其结果是 1。否则,结果是零
       例如:01010001|11000011结果为: 10010010
    7, ~ 按位非
       是对其运算数的每一位取反
       ~01010001 结果为:10101110
备注:操作的数据为byte类型,在内存占一个字节即8位2进制数表示
上一篇:cmd命令
下一篇:java枚举

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客