十进制负数转换成二进制数的方法及位运算

计算机中一般用补码来表示,若对于补码有不清楚之处请参考http://baike.baidu.com/view/377340.htm
负数转换为二进制,就是将其相反数(正数)的补码的每一位变反(1变0,0变1)最后将变完了的数值加1,就完成了负数的补码运算。这样就变成了二进制。
 
举个例子:
将-1变成二进制。
①首先确定二进制的位数,假定为16位,即可以表示-32768到32767的所有十进制整数。
②将-1的相反数,也就是1表示为二进制0000 0000 0000 0001(十六进制表示为0x0001)
(由于四位二进制可以表示为一位十六进制,故一般将二进制按四位进行分段表示)
③将这个二进制变反,可以得到1111 1111 1111 1110(十六进制HEX表示为0xFFFE)
④将变反后的数值加上1,得到-1的二进制表示1111 1111 1111 1111(十六进制表示0xFFFF)
 
其他在16位二进制可以表示范围内的负数均可如此进行计算。
这里需要注意的是:
①二进制的位数及其可以表示的十进制数的范围。
②二进制数码变反加一的过程。
 
 
 

Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)  

位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。

 

1.与运算符 与运算符用符号“&”表示,其使用规律如下: 两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。 public class data13 { public static void main(String[] args) { int a=129; int b=128; System.out.println("a 和b 与的结果是:"+(a&b)); } } 运行结果 a 和b 与的结果是:128 下面分析这个程序: “a”的值是129,转换成二进制就是10000001,而“b”的值是128,转换成二进制就是10000000。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是10000000,即128。

 

2.或运算符 或运算符用符号“|”表示,其运算规律如下: 两个位只要有一个为1,那么结果就是1,否则就为0,下面看一个简单的例子。 public class data14 { public static void main(String[] args) { int a=129; int b=128; System.out.println("a 和b 或的结果是:"+(a|b)); } } 运行结果 a 和b 或的结果是:129 下面分析这个程序段: a 的值是129,转换成二进制就是10000001,而b 的值是128,转换成二进制就是10000000,根据或运算符的运算规律,只有两个位有一个是1,结果才是1,可以知道结果就是10000001,即129。

 

3.非运算符 非运算符用符号“~”表示,其运算规律如下:

如果位为0,结果是1,如果位为1,结果是0,下面看一个简单例子。 public class data15 { public static void main(String[] args) { int a=2; System.out.println("a 非的结果是:"+(~a)); } }

 

4.异或运算符 异或运算符是用符号“^”表示的,其运算规律是: 两个操作数的位中,相同则结果为0,不同则结果为1。下面看一个简单的例子。 public class data16 { public static void main(String[] args) { int a=15; int b=2; System.out.println("a 与 b 异或的结果是:"+(a^b)); } } 运行结果 a 与 b 异或的结果是:13 分析上面的程序段:a 的值是15,转换成二进制为1111,而b 的值是2,转换成二进制为0010,根据异或的运算规律,可以得出其结果为1101 即13。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值