取反、原码、补码、位操作符

13 篇文章 5 订阅

一、取反

~101010=010101

 

二、原码

符号位(第一位):用0表示正数,用1表示负数

 

注意:

  • 正数的原码 就是它在计算机中的表示。如12的原码和二进制表示
  • 负数的原码和它在计算机中的表示不一样。负数的原码是对应的正数符号位取反,而负数在计算机中的表示是负数的补码。

 

三、补码

  • 负数:对负数的原码来说,符号位不变,其他位取反加1
例子:-12的补码

①-12对应正数12(0000 1100)→所有位取反(1111 0011)→+1(1111 0100)

②-12对应的负数-12的原码(1000 1100)→符号位不变,其他位取反(1111 0011)→+1(1111 0100)

 

  • 正数的补码是本身
计算负数时用到:

11-12

=11+(-12)

=0000 1011+1111 0100(补码化)

=1111 1111(竖式计算)

=-1(补码化原码:减1,符号位不变,其他位取反)

 

四、带符号数据

带符号数据:1000 1010=-10

不带符号数据:1000 1010=138

五、位运算符

Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。

运算符,是按照二进制格式来运算。

 

假设a = 60,b = 13;它们的二进制格式表示将如下:

A = 0011 1100

B = 0000 1101

操作符

描述

例子

与运算符(&)

如果相对应位都是1,则结果为1,否则为0

A&B得到12,即0000 1100

或运算符(|)

如果相对应位都是0,则结果为0,否则为1

A | B得到61,即 0011 1101

异或运算符(^)

如果相对应位值相同,则结果为0,否则为1(异或,异才为1)

(A ^ B)得到49,即 0011 0001

非与运算符(~)

/按位取反运算符

翻转操作数的每一位,即0变成1,1变成0。

(〜A)得到-61,即1100 0011

左移运算符(<<)

/按位左移运算符

左操作数按位左移右操作数指定的位数。低位补零

x<<y相当于x*2^y(x乘以2的y次方)

A << 2得到240,即 1111 0000

有符号右移运算符(>>)

按位右移运算符

(算术右移运算符)

左操作数按位右移右操作数指定的位数。低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。

x<<y相当于x/2^y(x除以2的y次方)

A >> 2得到15即 0000 1111

无符号右移运算符(>>>

按位右移补零操作符

(逻辑右移运算符)

左操作数的值按右操作数指定的位数右移低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同移动得到的空位以零填充。

 

                //有符号右移运算符(>>)与无符号右移运算符(>>>)的代码:

		System.out.println(Integer.toBinaryString(4>>2));
		System.out.println(Integer.toBinaryString(-4>>2));
		//1
		//11111111111111111111111111111111
		
		System.out.println(Integer.toBinaryString(4>>>2));
		System.out.println(Integer.toBinaryString(-4>>>2));
		//1
		//111111111111111111111111111111

PS:移位运算符的右操作数要完成模 32 的运算(除非左操作数是 long 类型, 在这种情

况下需要对右操作數模 64 )。例如, 1 «35 的值等同于 1 «3 或 8。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值