`
最王座
  • 浏览: 141041 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java位运算(二进制运算)

阅读更多

一、简介

Java中所有的数据都是以二进制数据的形式进行计算的,即如果有一个int型变量,要采用位运算时必须将其变为二进制数据。

 

二、位运算符

 

三、示例代码

package com.wbf.binary;

import org.junit.Test;

public class BinaryTest {
	
	@Test
	public void testBinary() {
		
		int x = 3;
		int y = -3;
		
		System.out.println(x + "取反:" + ~x); //注意是取反,而不是反码
		System.out.println(y + "取反:" + ~y);
		
		System.out.println("-----------------------------");
		
		System.out.println(x + "有符号右移两位:" + (x >> 2));
		System.out.println(y + "有符号右移两位:" + (y >> 2));
		
		System.out.println("-----------------------------");
		
		System.out.println(x + "有符号左移两位:" + (x << 2));
		System.out.println(y + "有符号左移两位:" + (y << 2));
	}
	
}

 

四、Java位运算知识点总结

1.原码、反码和补码定义 

1.原码

将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示)。
为了简单起见,我们用1个字节来表示一个整数。
     +7的原码为: 00000111
     -7的原码为: 10000111

2.反码

一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,其余各位是对原码取反。
为了简单起见,我们用1个字节来表示一个整数:
     +7的反码为:00000111
     -7的反码为: 11111000

3.补码

补码:一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,则符号位为1,其余各位是对原码取反,然后整个数加1。为了简单起见,我们用1个字节来表示一个整数:
+7的补码为: 00000111
-7的补码为: 11111001

已知一个负数的补码,将其转换为十进制数,步骤:
      1、先对各位取反;
      2、将其转换为十进制数;
      3、加上负号,再减去1。
      例如:
      11111010,最高位为1,是负数,先对各位取反得00000101,转换为十进制数得5,加上负号得-5,再减1得-6。

 

2.移位运算

1. 左移

左移操作就是讲云算数的二进制码整体左移指定位数,左移之后的空位使用0来填充



 

2. 右移

右移操作就是将运算数的二进制码整体右移,右移之后空出来的位置以符号位填充。如果是正数则使用0填充,如果是负数则使用1填充。但是对于无符号右移,不管是正数还是负数都以0填充空出来的位。

(1) 有符号右移

 

(2) 无符号右移

 

3.常见问题

我把int a=232;进行强转为byte类型时为什么是负数???

  • 大小: 31.8 KB
  • 大小: 17.9 KB
  • 大小: 41.6 KB
  • 大小: 34.2 KB
分享到:
评论

相关推荐

    java二进制运算器(加、见、乘、除)

    在Java编程语言中,二进制运算是一种基础且重要的概念,尤其对于计算机科学的理解和算法设计至关重要。二进制运算器通常是指一个程序或工具,它能够执行针对二进制数的基本算术运算,如加法、减法、乘法和除法。在这...

    详谈Java中的二进制及基本的位运算

    Java 中的二进制及基本的位运算 Java 中的二进制是计算技术中广泛采用的数制,使用 0 和 1 两个数码来表示数。Java 中的二进制数据主要是以补码的形式存储的。计算机中的二进制是一个非常微小的开关,用“开”来...

    十六进制字符串按位异或运算工具和java位异或运算

    当两个十六进制字符串进行按位异或运算时,会先将它们转换为二进制形式,然后逐位进行异或操作。异或运算是对两个位进行比较,如果两个位相同,则结果为0;如果两个位不同,则结果为1。 在Java中,我们可以利用`...

    大数运算包含加,减,乘,除,取模,幂运算,模幂运算。支持十进制运算,二进制运算.zip

    支持十进制运算,二进制运算.zip"文件中,我们可以预见到这可能是一个关于大数运算的程序或库,它不仅支持常见的十进制运算,还特别强调了二进制运算。 1. **大数运算**:大数运算通常在需要精确计算或处理大数据量...

    Java实现任意进制的转换

    本文将详细介绍如何使用Java语言实现任意进制之间的转换,并涵盖从二进制到十六进制、从十进制到任意进制以及进行36进制加法的转换方法。 首先,让我们从二进制转十六进制开始。在Java中,我们可以使用`Integer`类...

    java权限设置,和java处理字符和二进制的转换

    Java权限设置和字符、二进制转换 Java权限设置是一种常用的权限控制方法,用于控制用户对系统资源的访问权限。在Java中,我们可以使用位运算来实现权限控制。下面是Java权限设置的知识点: 1. 权限控制算法:我们...

    Java程序十进制转二进制,八进制,十六进制

    在Java编程语言中,将十进制...总的来说,理解并熟练掌握这些进制转换在Java编程中至关重要,特别是在处理位运算、数据存储和网络通信等场景。通过Transform.java这样的简单程序,开发者可以更好地理解和实践这些概念。

    整数位运算和二进制显示.zip

    标题中的“整数位运算和二进制显示”暗示了这个实验项目主要涉及Java编程语言中的位运算操作以及如何在图形用户界面(GUI)中显示二进制数字。位运算在计算机科学中是非常基础且重要的概念,它们允许我们对整数进行...

    06-Java语言基础(进制的由来

    在Java编程中,进制转换能力可以帮助我们更好地处理和解析二进制数据,比如在读写文件、解析网络协议或处理位掩码时。 总结起来,进制是数字系统的核心,而二进制、八进制和十六进制在计算机科学中扮演着重要角色。...

    Java把十进制转成二进制(任意进制)的程序

    在Java编程语言中,将十进制数转换为二进制或其他任意进制是一项常见的任务。这主要涉及到数字系统的基础理论以及Java中的字符串处理和数学运算。以下将详细讲解如何实现这一功能。 首先,让我们从最基础的二进制...

    java基础,进制转换.pdf

    - 二进制数的算术运算:例如,30 - 70的计算过程实际上是将30转换为二进制,再将70的负数也转换为二进制,然后进行二进制的加法运算。 6. 进制转换的计算方法 - 位权表示法:采用2的幂次方表示法来定义不同进制...

    JAVA位运算.pdf

    在Java编程中,位运算是一门精细的艺术,涉及到对整数类型的二进制位进行直接操作。这些操作不仅能够优化代码执行效率,还常用于实现特定的算法需求。本文将深入探讨Java中的位运算,包括位运算符、它们的工作原理...

    java程序实现十进制转二进制,八进制,十六进制

    根据给定的信息,本文将详细解释如何在Java中开发一个简单的程序来实现十进制数向二进制、八进制以及十六进制的转换。 ### Java程序实现十进制转二进制、八进制、十六进制 #### 程序概述 此Java程序的主要功能是...

    CE二进制运算器正式版

    作为一个专业的IT工具,它允许用户执行包括加法、减法、乘法、除法以及位移、按位与、按位或、按位异或等在内的各种二进制运算。这些运算对于理解和处理二进制数据至关重要,尤其在计算机科学、编程、硬件设计等领域...

    java 进制转换,二进制 十进制 十六进制 正数 负数的进制等等!.docx

    Java并没有直接提供将十进制小数转换为其他进制的内置方法,但可以通过一些数学运算和位操作实现。例如,将十进制小数转换为二进制通常需要乘以2并取整,然后不断重复这个过程直到小数部分为0。 总之,理解并熟练...

    位运算课件(java学习位运算课件)

    位运算在Java编程中是底层操作,用于直接处理二进制数据,对于理解计算机内部机制和优化代码性能至关重要。本文将深入探讨位运算的相关知识,包括计算机中数据的表示方法、二进制计数系统、以及原码、反码和补码的...

    java位运算,符号运算 详细解释

    Java位运算是一种底层操作,它直接作用于二进制位,是计算机科学中的基础操作。在Java编程中,位运算可以用于高效地处理数据,尤其是在处理数组、位集或者进行低级优化时非常有用。本篇文章将深入探讨Java中的位运算...

    汉字十六进制和二进制转换

    通过上述分析可以看出,给定的Java代码示例有效地实现了汉字从二进制到十六进制的转换,以及从十六进制回到二进制的逆过程。这对于理解字符编码、数据表示和转换等概念非常有帮助。同时,这些方法也可以应用于更广泛...

Global site tag (gtag.js) - Google Analytics