java语言基础回顾(二)--位运算以及原码,反码,补码

本文详细介绍了二进制数的原码、反码、补码表示方法,以及位运算符的分类和使用,包括与、或、异或、取反等操作,并通过实例说明了负数的位运算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原码,反码,补码简介

*原码

  • 二进制的定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
  • 例:通过一个字节表示 +7 原码:0(符号位) 0000111
  • -7原码:1(符号位) 0000111

*反码
正数的反码与原码一样;负数的反码是对其除符号位外逐位取反,1变0,0变1;

*补码
正数的补码与原码一样;负数的补码是它的反码加1求和;
方法:求负数的补码:依照原码求出反码再加1
求负数的补码的原码:补码-1再求出原码

计算机都是以数据的补码进行存储和运算的,所以进行有关于负数运算的时候要注意。必须先求出负数的补码再运算,而正数则不用,因为它的补码是它的本身。

位运算

位运算符的分类以及用法

  1. 与 & 有0则0,表达式两边都为true才true
  2. 或 | 有1则1 ,表达式只要有一边为true就true
  3. 异或 ^ 相同则0,不同则1,表达式两边相反则true
  4. 取反 ~ 按位取反(符号位也需要,和求反码不一样)
  5. 有符号位左移 << a>>b,a向左移动b位,则是a乘以2的b次幂
  6. 有符号位右移 >> 与左移相反,则是a除以2的b次幂
  7. 无符号位右移 >>> 忽略符号位,空位都以0补齐

口诀:
正数取反等于正数加1取负 例11取反等于-12
负数取反等于负数加1取正 例-7取反等于6

注意点:
负数的位运算:
例 :-7&-1
-7的补码: 1 111 1001
-1的补码:1 111 1111
相与:1 111 1001 求出了结果的补码**(注意:答案不是这个,还要求出它的原码)**
1 111 1000 接着求出结果的反码
1 000 0 111 最后是求出它的原码 ,为 -7

面试题

实现两个数值的交换,不能定义第三方变量
异或运算^的特征:一个数异或同一个数两次等于它本身,不变。
在这里插入图片描述
在这里插入图片描述
而开发的时候多使用定义第三方变量的方法:
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值