码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA中负数转二进制分析

时间:2014-09-09 16:11:58      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:计算机   源码   java   32位   二进制   

最近在看集合源码,发现ArrayDeque里面用到了大量的&运算,这牵扯到了二进制。突然发现自己对负数的二进制有点模糊了,对此进行了一些支持补充。

首先我们要对原码、反码和补码有个了解:

1、所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
2、反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
原码10010= 反码11101 (10010,1为符号码,故为负)
(11101) 二进制= -13 十进制
3、补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
1、先取1的原码:00000000 00000000 00000000 00000001
2、得反码:     11111111 11111111 11111111 11111110
3、得补码:     11111111 11111111 11111111 11111111

十六进制表示: 0xFFFFFFFF

所以Java中Integer.toBinaryString(-5)结果为11111111111111111111111111111011. Integer是32位(bit)的.

负数的二进制规律:

1、取负数的绝对值的原码;

2、计算原码的反码;

3、对反码加一,获取补码。


作者:伫望碧落 出处:http://blog.csdn.net/cl05300629

JAVA中负数转二进制分析

标签:计算机   源码   java   32位   二进制   

原文地址:http://blog.csdn.net/cl05300629/article/details/39155607

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!