注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Javado做Java

学习的点点滴滴http://blog.csdn.net/guorujian

 
 
 

日志

 
 
关于我

东北人! 狮子的獠牙、光速拳! 我很佩服163的办事认真,故乡一栏竟然能精确到乡,而且我们乡合并才不久。厉害!永远支持网易!

网易考拉推荐

Java里面的位运算  

2008-03-12 22:39:25|  分类: 总结篇 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Java里面的位运算往往被java老鸟们所忽略,今天总结一下以备后用:

原码:
   
将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示)。
这个时候有一个问题:表示0的时候正0和负0表示并不一样,所以在计算机中没有采用原码的表示形式。
-----------------------------------------------------------------------------------
反码:
    
一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,其余各位是对原码取反。
问题和上面一样的。所以,计算机中也没有采用反码来表示数字。
-----------------------------------------------------------------------------------
补码:
   
 一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,则符号位为1,其余各位是对原码取反,然后整个数加1。

    在计算机中,如果我们用1个字节表示一个数,一个字节有8位,超过8位就进1,在内存中情况为:1 00000000。进位1被丢弃。这种情况,我们叫溢出。
在计算机中,在计算-0的补码的时候因为溢出,导致-0和+0是一样的表示,所以计算机中采用补码的形式表示数字。
已知一个负数的补码,将其转换为十进制数,步骤:
      1、先对各位取反;
      2、将其转换为十进制数;
      3、加上负号,再减去1。
-----------------------------------------------------------------------------------
二进制位操作符:
为了方便对二进制位进行操作,Java给我们提供了四个二进制位操作符:

&     按位与     两个都为1才为1。
|     按位或     有一个为1就为1。
^    按位异或   只有不同的时候才为0,相同的为1。
~    按位取反   取反。
-----------------------------------------------------------------------------------

Java中有三个移位运算符:
左移:<<           向左移动,低位补0。
带符号右移:>>     向右移动,正数高位补0,负数高位补1。
无符号右移:>>>    向右移动,位补0。
-----------------------------------------------------------------------------------

在适当的时候使用这些基本的运算还是比较方便的。

  评论这张
 
阅读(256)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017