java基础02--进制,原码、反码、补码,位运算

进制介绍

注意:二进制加0b,八进制0开头,十六进制0x
在这里插入图片描述

十进制转二进制

在这里插入图片描述
注意:一个字节有8位,所以要加上两个00

十进制转十六进制

在这里插入图片描述

二进制转八进制

在这里插入图片描述

二进制转十六进制

在这里插入图片描述

八进制转二进制

十六进制转二进制

原码、反码、补码(重难点,要背

tip:
一般都是: 原码->反码->补码 --开始运算-- 补码 ->反码->原码
在这里插入图片描述

位运算符

在这里插入图片描述
tip:左乘右除,移动的是二进制的补码,右移高位补符号位,左移低位补0
在这里插入图片描述
注意:左移和右移也是在补码的基础上进行的,左边是高位右边是低位

案例

2&3

~-2
在这里插入图片描述
~2
在这里插入图片描述
5>>2

首先是 5>>2 = 1
原码 0000 …… 0101
补码 0000 …… 0101
>>2(正数右移高位补0)
补码 0000 …… 0001
原码 0000 …… 0001
= 1

-5>>2

然后是 -5>>2 = -2
原码 1000 …… 0101
反码 1111 …… 1010 负数的反码是保留符号位不变源码取反
补码 1111 …… 1011 补码是反码加1
>>2 (负数右移高位补1)
补码 1111 …… 1110
反码 1111 …… 1101 补码转反码减1
源码 10000010 负数反码转源码保留符号位不变取反
= -2

无符号右移注意:在C语言中是没有“无符号右移”运算符的,在Java中用“>>>”表示,C语言中可以利用“((unsigned int)(-5))>>n”来实现无论是正数还是负数,其无符号右移都是在其补码的基础上右移,高位补0。
例如-5
原码 1000 …… 0101
反码 1111 …… 1010 负数的反码是保留符号位不变源码取反
补码 1111 …… 1011 补码是反码加1
>>>2(无符号右移,高位补0)
补码 0011 …… 1110
反码 (此时符号位已经变为0了,系统会当成正数来处理,原反补码均一样)
原码 0011 …… 1110
= 这个不好说,得看操作系统的位数(在我这里int为32位,
结果为:107374182==>00111111 11111111 11111111 11111110)


此博客主要为韩顺平老师java课程的笔记总结,详细内容可以去b站看韩老师的相关课程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值