原码、反码、补码转换 & 运算符

一、原码、反码、补码相互转换

正整数的原码、补码、反码都一样,第一位为符号位,为0,余下七位为二进制形式。

下面主要讲解负整数三码的转换

1、原码——>反码:符号位不变,数值位分别按位取反。

eg. X= -1101001

     X原=11101001

     X反=10010110

2、反码——>原码:也是按位取反,如上。
3、原码——>补码:符号位不变,数值位按位取反,末位再加1,即反码末位加1

eg. X= -1101001

     X原=11101001

     X反=10010110

     X补=10010111

4、补码——>原码:符号位不变,数值位按位取反,末位加1。即补码的补码等于原码

eg. X补=11101100

      X原=10010100

5、补码转为原码的负数的补码:符号位和数值位都取反,末位再加1

eg.  X补=01010110

      -X补=10101010

二、运算符

1、JAVA的运算符,分为四类

算数运算符:+  -  *  /  %  ++  --

关系运算符:==  !=  >  >=  <  <=

逻辑运算符:&&  ||  !  ^  &  |

位运算符:&  |  ~  ^  >>  <<  >>>;

2、逻辑运算符

 逻辑与 '&&',逻辑或 '||',逻辑非 '!',逻辑异或 '^',逻辑与 '&',逻辑或 '|'

逻辑运算符要求操作数的数据类型为逻辑型,其运算结果也是逻辑型值。逻辑运算的数据和逻辑运算符的运算结果是boolean类型。

两种逻辑与(&&和&)和 两种逻辑或(||和|)的区别

&和|运算是把逻辑表达式全部计算完,而&&和||运算具有短路计算功能

3、位运算符

位运算是将数据先转化为二进制数补码形式,再逐位(bit)按规则计算

& :按位与(全1为1,否则为0)

 | :按位或(全0位0,否则为1)

~ :按位取反(有1则0,有0则1)

^ : 按位异或(相同为0,不同为1)

4、移位运算符

<<     算术左移,我们会把最高位溢出,即舍掉,最低位补零

>>     算术右移, 如果最高位是1,那么高位就要补1,低位舍掉;如果高位时0,那么高位就补0,低位舍掉

>>>   逻辑右移,就是不考虑符号位,直接右移,高位补零,低位舍掉

算术左移和算术右移主要用来进行有符号位的倍增、倍减

逻辑左移和逻辑右移主要用来进行无符号位的倍增、倍减

例1:

注意:计算机运算的时候,都是以补码的方式来运算的,如果补码计算结果负数,则需要把补码转为原码

1>>2

1的原码

00000000 00000000 00000000 00000001

因为正数的原码、反码、补码都一样

所以1的补码

00000000 00000000 00000000 00000001

算数右移2位结果

00000000 00000000 00000000 00000000

所以1>>2=0

推导出1>>n(n>1的正整数) 结果都为0

例2:

-1>>2

-1的原码

10000000 00000000 00000000 00000001

-1的反码

11111111 11111111 11111111 11111110

-1的补码

11111111 11111111 11111111 11111111

算数右移2位结果

11111111 11111111 11111111 11111111

补码->反码 :-1

11111111 11111111 11111111 11111110

反码->原码

10000000 00000000 00000000 00000001

所以-1>>2=-1

推导出-1>>n(n>1的正整数) 结果都为-1

例3:

3>>>2

3的原码

00000000 00000000 00000000 00000011

因为正数的原码、反码、补码都一样

所以3的补码

00000000 00000000 00000000 00000011

>>>逻辑右移2位结果为

00000000 00000000 00000000 00000000

所以3>>>2=0

 

一篇文章看懂二进制、八进制、十进制、十六进制数据转换

补码、原码、反码的转换

JAVA二进制.位运算.移位运算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值