`
buluzhai
  • 浏览: 110519 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

计算一个整数的符号

    博客分类:
  • MTK
阅读更多
int v;      // 找出v的符号
int sign;   // 保存结果

// CHAR_BIT 是一个字节的位数,一般为8.
sign = -(v < 0);  // 如果v < 0 则 -1, 否则为 0. 
// 或者, 为了避免使用分支指令,标志寄存器 (IA32):
sign = -(int)((unsigned int)((int)v) >> (sizeof(int) * CHAR_BIT - 1));
// 或者更简单的使用
sign = v >> (sizeof(int) * CHAR_BIT - 1); 


后面的表达式在32位整数下面计算出sign = v >> 31,这招是比sign = -(v < 0)要快的。
当有符号的整数右移31位的时候,最左边的位被移到其他位,当为负数的时候最左边是1,反之为0,这跟cpu的架构也有关系。



分享到:
评论

相关推荐

    计算机组成原理之无符号整数的表示和运算

    计算机组成原理中的无符号整数表示和运算是计算机科学中一个重要的基础知识。无符号整数是一种数学中的自然数,例如01234。在计算机内部, 无符号整数的表示和运算是通过二进制数来实现的。 在计算机内部,无符号...

    带符号整数的除法与余数

    在计算机科学中,处理带符号整数的除法和余数是一个基本而又复杂的主题。在本知识点中,我们将详细探讨这一主题,并解释C语言和C++语言在这一方面的标准规定。首先,带符号整数的除法运算中,商和余数的计算方式是...

    可用于数论计算的无符号大整数类

    标签“综合系统类”暗示了这个类可能是某个更大系统的一部分,它可能是一个库或者框架的一部分,用于支持多种不同的计算任务,而不仅仅局限于数论。这样的类往往设计时会考虑性能、内存效率以及与其他组件的兼容性。...

    计算机组组成原理课程设计,设计一台嵌入式CISI模型计算机(输入包含5个整数(有符号数)的数组M,输出所有负数的平方和)

    这个特定的设计任务是创建一个嵌入式CISI(可能是CPU架构的简化表示)模型计算机,其功能是处理一个包含五个有符号整数的数组,并计算其中所有负数的平方和。这一任务涉及到了许多关键的计算机系统组件和技术,包括...

    输入包含10个整数(无符号数)的数组M,输出中位数。

    本话题关注的是如何计算一个包含10个无符号整数的数组的中位数。中位数是一组数据集中间位置的数值,将数据分为相等的两部分,一半的值大于它,另一半小于或等于它。对于10个元素的数组,中位数是第5个元素,因为它...

    桂电计算机组成原理课设,输入包含5个整数(有符号数)的数组M,输出所有负数的平方和

    这个系统的核心任务是处理一个包含五个有符号整数的数组M,并计算其中所有负数的平方和。这是一个典型的数字逻辑与计算机体系结构的应用问题,涉及到硬件描述语言(如VHDL)编程、硬件仿真以及数字信号处理的基本...

    易语言有符号转换到无符号

    例如,如果一个有符号的整数字符串表示了一个负数,`StrToIntEx` 将会返回这个负数的绝对值,而不会改变它的符号。为了将其转换为无符号整数,我们需要在理解原始数值的基础上进行适当的操作,如取绝对值后再转换,...

    易语言字节集解决无符号整数高位位与源码

    在处理高位位时,我们可能需要将一个整数向左或向右移动若干位,或者与另一个整数进行位与操作。例如,位左移操作可以快速地将一个数值乘以2的幂次,而位与操作则可以用来筛选出特定的位模式。 易语言中的字节集...

    易语言源码易语言字节集解决无符号整数高位位与源码.rar

    如果你正在编写需要处理大量位操作的程序,或者想要提升在易语言中的编程技能,这个源码会是一个宝贵的参考资料。通过仔细研究并实践,你可以掌握如何在易语言中有效地解决这类问题,提高你的编程能力。

    计算机组成 整数加减

    这种运算方式中,一个二进制数的最高位作为符号位,其余位表示数值的大小。在进行加减运算时,我们必须考虑溢出情况,即结果超出数据类型所能表示的范围。如果计算结果导致符号位改变,那么就发生了溢出,需要进行...

    计组课设,A题输入包含5个整数(有符号数)的数组M,输出最大负数的绝对值

    在本题中,需要创建一个能够容纳5个整数的数组M,用以存储输入的数字。数组的索引通常从0开始,因此数组M的元素将为M[0]到M[4]。 3. **最大负数的查找**:编程时,我们需要遍历数组M,比较每个元素的值,找出最小的...

    长整数高精度计算

    它通过将长整数分解为若干个较小的部分(例如,每个部分存储在一个数组元素中),然后对这些部分进行单独的计算,最后再将结果组合起来得到最终答案。这种方法避免了溢出问题,确保了计算的准确性和稳定性。 #### ...

    无符号整数表达式的判定

    例如,一个8位无符号整数可以表示从0到255的数值。 本文将深入解析由给定文件中的代码片段实现的无符号整数表达式的判定方法,并对其工作原理、设计思路以及潜在的应用场景进行详尽的解释和分析。 #### 代码结构与...

    汇编 输出给定的无符号整数

    实验的核心是编写一个汇编程序,实现输出一个给定的无符号整数(范围0~65535)。具体步骤如下: 1. **数据准备**:首先定义了一个名为`AB`的变量,存储待输出的无符号整数1234H。 2. **输出缓冲区设置**:定义了一...

    易语言字节集解决无符号整数高位位与源码.7z

    无符号整数不包含负值,只表示正整数或零,因此它们在处理二进制数据、网络通信、计算等领域非常有用。在易语言中,字节集是一种特殊的类型,用于存储和操作字节序列,这对于处理二进制数据特别方便。 标题“易语言...

    Verilog实现一个32位有符号除法器和一个32位无符号除法器

    设计一个32位有符号除法器需要考虑溢出、负数的处理以及正负数相除的情况。在Verilog中,可以使用操作符如`/`和`%`来进行除法和取余运算,但这些操作符在硬件层面并不直接对应,因此需要自定义硬件逻辑来实现。 ...

    无符号大数计算

    在标题提及的"无符号大数计算"项目中,我们可以推断出它提供了一个用户界面(UI)来输入和操作这些大整数。这样的设计使得用户能够直观地进行加、减、乘、除等基本运算,而无需了解背后的复杂实现。对于开发者来说,...

    能够实现逻辑运算(逻辑非、逻辑加、逻辑乘、逻辑异)、定点整数的单符号位补码加减运算、定点整数的原码一位乘法运算和浮点数的加减运算

    相同符号的两数相加会得到一个较大绝对值的数,不同符号的两数相加会进行减法运算。需要注意溢出的情况,溢出可能导致错误的结果。 再者,定点整数的**原码一位乘法运算**。原码是直接用最高位表示符号的编码方式,...

    C语言编一个程序完成64位数据(无符号)的加法,减法运算

    在计算机科学领域,处理大整数是一个常见的需求,尤其是在那些需要精确计算且数字可能非常大的应用中。64位无符号整数是指其数值范围从0到2^64 - 1的整数类型。由于标准的C语言库并没有提供直接支持64位无符号整数...

    计算机组成原理之带符号整数的表示和运算-原反补

    计算机组成原理中的带符号整数表示和运算是一个关键概念,主要涉及到原码、反码和补码这三种编码方式。带符号整数是指在计算机中能够表示正负的整数,例如-2、-1、0、1、2等。在C语言中,short和int都是带符号整数...

Global site tag (gtag.js) - Google Analytics