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的架构也有关系。
分享到:
相关推荐
可用于数论计算的无符号大整数类
桂林电子科技大学计算机与信息安全学院计算机组成原理课程设计,题目为输入包含10个整数(无符号数)的数组M,输出中位数。文件里面有代码,有文档。下载可直接使用。
计算机组组成原理课程设计,设计一台嵌入式CISI模型计算机(输入包含5个整数(有符号数)的数组M,输出所有负数的平方和)。文件中CISI可以直接使用,其他文件夹是各个器件的的代码。
资源包括:源代码+详细设计报告+使用说明。 设计一台嵌入式CISC模型计算机, 输入包含5个整数(有符号数)的数组M,输出所有负数的平方和。
计算机组成原理之无符号整数的表示和运算
能够实现机器数的真值还原(定点整数)、定点整数的单符号位补码加减运算、定点整数的原码乘法运算和浮点数的加减运算。
VC 无符号大整数类计算方法,作者:缪元虎,四川绵阳供电局,重载的减法运算符,因为是无符号数,所以结果为大数减小数得到的差,乘2运算,即// a = a * 2^dwTimes; 相当于左移一位二进制,低位补0,除2运算;相当于...
csharp实现的128位带符号整数计算,包括加、减、乘、除、求余、整数相关的位运算、转浮点数和转字符串等基本的计算
设计一台嵌入式CISC模型计算机(采用定长CPU周期、联合控制方式),并运行能完成一定功能的机器语言程序进行验证,实现方法可从以下4类中任选一个: ●连续输入5个有符号整数求所有负数的平方和并输出显示 说明:...
计算机组成原理之带符号整数的表示和运算_原反补
用于计算无符号大整数加减乘除的计算,有界面进行提示输入,操作简单
现在有一个简单游戏:给你一行n个整数,要求你在两两之间放入“+”、“-”、“*”、“/”等符号共n-1个,使得表达式计算结果最大且不包含数字k。 请注意: 1) 表达式自左向右运算,不考虑优先级,例如:6+7*11=143;...
能够实现逻辑运算(逻辑非、逻辑加、逻辑乘、逻辑异)、定点整数的单符号位补码加减运算、定点整数的原码一位乘法运算和浮点数的加减运算。
对于每个测试用例,输入的每一行是一个整数n(2),表示符号三角形第一行符号的个数。当输入n为0时表示输入结束。Output 对于每个测试案例,输出包括一行,这一行只包含一个整数,就是该测试案例总共有多少不同的符号...
在开发STM32单片机程序时,需要计算可能结果是64bit的乘法,就设计了这段代码,经测试无误。
设计一台嵌入式CISC模型计算机(采用定长CPU周期),并运行能完成一定功能的机器语言程序进行验证,程序功能如下:●输入2个整数(无符号数),完成如下功能:(1)若两个数中有一个是奇数,则输出这个奇数;...
采用链表来表示一个带符号的超长整数(20位以上)。并且进行如下处理。将超长整数s上为奇数的数和为偶数的数依次取出,构成一个新数(为奇数的数在前,为偶数的数在后)显示并存在文件number.txt中。例如,当s为...
内容索引:VC/C++源码,算法相关,数论计算 VC++数论计算的无符号大整数类及范例,利用空闲时间编写了一个用于数论计算的无符号大整数类: //乘2运算,即 // a = a * 2^dwTimes; 相当于左移一位二进制,低位补0 ...
包含全部代码以及课设报告
这是一个非常简单的实用程序,可根据无符号整数输入计算二进制补码值。 还必须指定输入整数的位数