`

计算机基础 补码 位操作

    博客分类:
  • Java
 
阅读更多

Java中的Integer.toBinaryString(i)可以将整数转化为二进制的字符串,不过这个没有输出前面额外的零。

 

有符号的整数    原码    反码    补码
  47      00101111  00101111  00101111(正数补码和原码、反码相同,不能从字面理解)
 -47      10101111  11010000  11010001(负数补码是在反码上加1)

  1. 字节8位、字16位、双字32位、四字64位。
  2. 1个字节可以表示256个数,表示有符号数范围是-128 ~ 127.
  3. 有符号数在计算机中以补码形式存储。
  4. 正数的最高位是0,负数的最高位是1。
  5. 正数的 原码 = 反码 = 补码
  6. 负数的 原码 和 正数的原码一样,只有符号位不一样。
  7. 负数的 反码 = 原码取反(符合为不变)
  8. 负数的 补码 = 反码+1;
  9. 因为计算机中只是存补码,总结下补码,正数的补码=它的原码,负数的补码=它正数原码取反+1;

位操作:( i 为一个有符号数)

【-i & i 】得到 i 最低位为1的数。应用【i==(-i & i)】i是不是0,或只有一个1.

 

 看一些程序库里面的类型,总是喜欢定义为int,然后用位操作,这中方法应该效率高些,明显要比写成字符串然后比较要效率高很多,如:Zest中的connections的类型:

	/**
	 * Style indicating that connections should show their direction by default.
	 */
	public static final int CONNECTIONS_DIRECTED = 1 << 1;

	/**
	 * Style constant to indicate that connections should be drawn with solid
	 * lines (this is the default).
	 */
	public static final int CONNECTIONS_SOLID = 1 << 2;
	/**
	 * Style constant to indicate that connections should be drawn with dashed
	 * lines.
	 */
	public static final int CONNECTIONS_DASH = 1 << 3;
	/**
	 * Style constant to indicate that connections should be drawn with dotted
	 * lines.
	 */
	public static final int CONNECTIONS_DOT = 1 << 4;
	/**
	 * Style constant to indicate that connections should be drawn with
	 * dash-dotted lines.
	 */
	public static final int CONNECTIONS_DASH_DOT = 1 << 5;

 

	/**
	 * Bitwise ANDs the styleToCheck integer with the given style.
	 * 
	 * @param style
	 * @param styleToCheck
	 * @return boolean if styleToCheck is part of the style
	 */
	public static boolean checkStyle(int style, int styleToCheck) {
		return ((style & styleToCheck) == styleToCheck);
	}

 

判断类型方便,快些。

 

分享到:
评论

相关推荐

    logisim补码一位乘法器设计.txt

    ### Logisim补码一位乘法器设计 #### 一、Logisim简介与应用背景 Logisim是一款用于模拟数字逻辑电路的软件工具,它能够帮助用户设计、测试和优化数字逻辑电路。通过Logisim,用户可以构建复杂的电路模型,并通过...

    16位补码乘16位补码再加32位的乘加器

    在计算机系统中,乘法和加法操作是基础运算,特别是在高级计算和数据处理中,高效执行这些操作至关重要。"16位补码乘16位补码再加32位的乘加器"是一种实现这类计算的硬件结构,它涉及到二进制补码表示、乘法算法以及...

    原码和补码 基础教程

    对于负数,则除了最高位的符号位保持不变外,其他各位进行取反操作。 **2. 示例** - -3的反码计算过程如下:`[10000011]反 = 11111100`。 #### 五、补码详解 **1. 定义** 补码进一步改进了反码的表示方式,不仅...

    vi.zip_16进制补码_Labview 进制_labview 二进制_labview补码_二进制补码

    例如,可以使用“字符串到数值”函数将16进制字符串转换为数值,再利用“位操作”节点进行原码、反码和补码的计算。对于负数,LabVIEW会自动使用补码表示。如果需要显示或处理这些数值,可以使用“数值到字符串”...

    基于QuartusII的16位补码加减法运算器

    这包括定义输入(两个16位的补码操作数和一个操作类型标志,用于选择加法或减法)和输出(16位的运算结果和进位标志)。 2. **仿真验证**:使用Quartus II的集成仿真器进行功能验证,确保设计在各种可能的输入情况...

    西北工业大学计算机系统基础实验报告

    计算机系统基础实验报告主要涉及了计算机中数据的表示和处理,包括位操作、补码运算以及浮点数表示。在Lab1中,学生通过编写C语言函数来实践这些概念,以下是对具体题目的详细分析: 1. **bitOr**:这个函数实现了...

    原码 补码 反码 按位运算

    这些按位运算是构建更复杂逻辑运算的基础,广泛应用于计算机系统中,如数据处理、位操作、内存地址计算等。 总结来说,原码、补码和反码是计算机表示有符号整数的方式,其中补码是实际运算所用的形式。按位运算是对...

    16位补码并行加法器(含减法器)实验

    16位补码并行加法器(含减法器)实验是学习计算机内部运算机制的重要实践环节。这个实验旨在帮助学生理解和掌握如何设计和实现一个能够进行加法和减法操作的硬件电路,这对于理解计算机内部数据处理过程至关重要。 ...

    C#补码加法运算代码

    在计算机科学领域,二进制数字系统是计算机内部表示数值的基础。为了能够有效地进行负数的表示与计算,计算机采用了一种称为“补码”的表示方法。补码不仅适用于正数,还适用于负数,且能够简化加减运算的过程。在C#...

    补码工具.rar

    4. **位操作**:如AND(与)、OR(或)、XOR(异或)等,这些操作在处理补码时可以用来设置、清除或测试特定位,对于理解和编写编译器非常关键。 在VB6环境中,虽然主要使用高级语言编程,但理解补码原理仍然是必要...

    二进制补码加法器实验1

    总结来说,这个实验是计算机组成原理教学中的一个重要实践环节,它使学生能够亲手搭建和操作补码加法器,从而直观地理解二进制补码运算的机制,为理解和掌握计算机内部的算术运算打下坚实基础。同时,实验也锻炼了...

    大学计算机基础(第五版)课件

    《大学计算机基础(第五版)》是一本针对初学者深入浅出介绍计算机基础知识的教材,其涵盖的内容广泛且实用,适合大学生以及对计算机感兴趣的人群。这个压缩包包含了一到三章的重要教学材料,让我们逐一解析这些章节...

    原码转补码(逻辑门实现)

    通过这样的实验,学生不仅能理解原码和补码的概念,还能掌握逻辑门的运用以及FPGA的基本操作,这对于深入学习数字逻辑、计算机体系结构以及嵌入式系统等课程至关重要。此外,这也为未来在硬件设计和嵌入式系统开发等...

    计算机中的原码、反码和补码

    总之,原码、反码和补码是计算机科学中不可或缺的概念,它们不仅构成了计算机内部数据表示的基础,也是理解和解决许多编程问题的关键。掌握这些知识,对于从事IT行业的专业人士而言,无疑是极其宝贵的技能。

    原码、反码、补码的相关原理

    补码的主要优点在于,它可以将所有的加减运算统一为加法操作,且符号位能与数值位一起参与运算,大大简化了硬件电路设计,提高了运算效率。 #### 四、补码的数学意义与进位处理 补码的数学意义在于,它实际上是在...

    计算机组成原理补码乘法.pdf

    在计算机组成原理中,补码乘法可以分为两种:一位补码乘法和多位补码乘法。 一位补码乘法是指使用一位补码表示法来实现乘法运算的方法。这种方法可以将两个数字的乘法运算简化为一系列的位移和加法操作。例如,在...

    源码输入,补码输出的4位加法器verilog

    在计算机系统中,特别是在二进制运算中,补码表示法被广泛用于表示负数,因为补码能确保加法和减法操作的统一性。4位补码加法器可以处理两个4位二进制数(包括正负)的加法运算,同时考虑到溢出情况。 标题中的...

    大学计算机基础习题集及答案

    该习题集涵盖了大学计算机基础课程的10章内容,包括应用基础、操作系统、OFFICE、网络、多媒体等各种习题和答案。 计算机应用基础 * 世界上第一台电子计算机是在1946年诞生的。 * 非运算不属于逻辑运算。 * 世界上...

    计算机组成原理课程设计 补码一位乘法 原码一位乘法 + 8 条指令模型机 logisim 仿真 .circ 文件

    在这个课程设计中,我们将关注两个核心概念:补码一位乘法和原码一位乘法,以及一个简单的8条指令模型机的构建,这一切都将通过Logisim仿真软件进行实践操作。 首先,让我们来探讨补码一位乘法和原码一位乘法。在...

    原码补码及反码的区别

    在计算机科学中,数据表示是计算的基础之一,特别是在处理二进制数字时。原码、反码和补码是三种不同的二进制编码方式,主要用于表示有符号整数。理解这些概念对于深入理解计算机硬件和软件操作至关重要。 **原码...

Global site tag (gtag.js) - Google Analytics