java int 运算符_Java 位运算符和 int 类型的实现

Java 位运算符和 int 类型的实现

其他运算符

# 算术运算符

+、-、*、/、++i、i++、--i、i--

# 关系运算符

==、!=、>、=、<=

# 逻辑运算符

&&、||、!

# 赋值运算符

=、运算符=

# 其他运算符

## 三元运算符

bool表达式 ? x : y

## instanceof 运算符

boolean result = var instanceof classname;

位运算符

& 且

| 或

^ 异或

~ 按位取反

<< 左移运算符,向左移动指定位数,一般情况下每移动一位都会乘以2

>> 右移运算符,向右移动指定位数,一般情况下每移动一位都是除以2

>>> 按位右移补零操作符

Java int 的实现

int 基本信息

Java 中 int 为32 位,是基本类型的一种,对应包装类为Integer

Java 不存在无符号类型,int 由0、1~2^31-1、-1~(-2)^31 三部分组成

负数如何表示?

负数部分使用补码表示

补码:原码按位取反得到反码,反码加一得到补码

正整数部分少一个数

因为 1····0 的补码为其本身,这是一个负数,一个二进制数总能表示偶数个数字,使用了0之后负数能比正数多表示一个,就是 1····0。

重点,Java 中int 位移的特殊情况

根据 int 实现的原理,int 移位会产生一些特殊情况,如:

2147483647<<1 的结果为 -2,为什么呢?因为 2147483647 为 2^31-1(2的31 次方减1),即:0111,1111,1111,1111,1111,1111,1111,1111,当它向右移位得到的结果是 1111,1111,1111,1111,1111,1111,1111,1110,此时对于 Java 来讲,这已经是一个负数了

要先减去1 得到 1111,1111,1111,1111,1111,1111,1111,1101,再取反得到 0000,0000,0000,0000,0000,0000,0000,0010 也就是 2,所以结果是-2

利用Java位运算符,完成Unsigned转换&lpar;无符号&rpar;

方案二:利用Java位运算符,完成Unsigned转换. 正常情况下,Java提供的数据类型是有符号signed类型的,可以通过位运算的方式得到它们相对应的无符号值,参见几个方法中的代码: publi ...

LeetCode刷题笔记(3)Java位运算符与使用按位异或(进制之间的转换)

1.问题描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 算法应该具有线性时间复杂度并且不使用额外空间. 输入: [4,1,2,1,2] 输 ...

Java位运算符、位移运算符;原码、反码、补码

文章背景:雪花算法 id 生成长度问题. Java位运算符 - 异或运算符(^)

运算规则:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1.

- ...

Java byte类型转换成int类型时需要 &amp&semi; 0XFF的原因

Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b  = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 ...

【java提高】&lpar;17&rpar;---Java 位运算符

Java 位运算符 &.|.^.~.<<.>> 以前学过有关java的运算符,不过开发了这么久也很少用过这个.现在由于开发需要,所以现在再来回顾整理下有关java的运算 ...

Java位运算符浅析

在学习源码中,发现有大量使用位运算符,这样做的目的是为了节约内存开销和加快计算效率. 位运算符,这个”位”代表这什么? 位:二进制位简称“位”,是二进制记数系统中表示小于2的整数的符号,一般用1或 0 ...

java 位运算符 以及加法 交换两个变量值

先给出十转二的除法 2       60 30       0 15 0 7 1 3 1 1  1 0  1 60转二 111100 再介绍位运算符 a=60 b=13 A = 0011 1100 B ...

(九)java位运算符

位运算符 &(与),|(或),^(异或),~(取反),<>(右移),>>>(无符号右移)         1:为true,0为false ...

随机推荐

利用yii2 gridview实现批量删除案例&lbrack;转&rsqb;

今天仍然继续探讨GridView的问题,昨天有个小伙伴留言说你用gridview给我去掉表头的链接?我想啊想,这用gridview确实不容易实现,至少我没想出来,会的下方可留言.但是呢,这根gridv ...

UIScrollView的使用

UIScrollView表示可滚动的视图,它最主要的使用场景是让用户可以通过拖拽显示布置一屏的数据. 常用的属性或者方法有: frame:NSRect显示范围,小于屏幕尺寸的矩形区域: content ...

JAVA ,Map接口 ,迭代器Iterator

1.    Map 接口概述 java.util.Map 接口描述了映射结构, Map 接口允许以键集.值集合或键 - 值映射关系集的形式查看某个映射的内容. Java 自带了各种 Map 类. 这些 ...

第20章 DLL高级技术(2)

20.3 延迟载入DLL 20.3.1延迟载入的目的 (1)如果应用程序使用了多个DLL,那么它的初始化可能比慢,因为加载程序要将所有必需的DLL映射到进程的地址空间.→利用延迟加载可将载入过程延伸到 ...

configure&colon; error&colon; Please reinstall the libcurl distribution

configure: error: Please reinstall the libcurl distribution - easy.h should be in /include/curl/ 基本上 ...

部署WEB应用程序

部署WEB应用程序: 1.在模板机上新建IIS站点 2.安装WebDeploy后在IIS控制台中导出站点为应用程序包 其站点在新虚机上必须存在,否则会报错,如下: 应用程序(C:\ProgramDat ...

C&num;的数据类型、数据类型的转化

一.c#有15个预定义类型,其中13个是值类型,两个是引用类型(string 和 object)这里主要说明整型.浮点型.布尔型以及引用型 1.整型数据 2.浮点型 浮点型从精度有低到高有float. ...

Spring Boot 简单小Demo 转载!!!

Spring Boot简介 接下来我们所有的Spring代码实例将会基于Spring Boot,因此我们先来了解一下Spring Boot这个大杀器. Spring早期使用XML配置的方式来配置Spr ...

这可能是目前最新的 Vue 相关开源项目库汇总(转)

访问地址:https://juejin.im/entry/58bf745fa22b9d0058895a58 原文链接:https://github.com/opendigg/awesome-githu ...

WinForm中执行JS代码(多种方法)

方法一 使用微软官方组件Interop.MSScriptControl 1.msscript.ocx下载的地址   http://www.microsoft.com/downloads/details ...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值