比较两个数的大小
2016-03-16 21:54
176 查看
写一个比较函数比较哪个大:
void wholarge(int a,int b)
{
int c=a-b;
if((unsigned)c>>(sizeof(int)*8-1)==0) (1)
{
cout<<"a larger"<<endl;
}else
{
cout<<"b larger"<<endl;
}
}
(1) : 先把a b 两个数的差进行强制转换成无符号数,因为无符号数右移必须是逻辑右移,
(逻辑右移是左边补0,算术右移最高位是1,则补1, 是0 则补0)
关于移位问题:
有符号数:左移是逻辑移位,右移(这个不是一定的但大多数都是这么来的)是算术移位。
无符号数:左移右移都是逻辑移位。
还有一点是关于整数在计算机中的是以什么方式来存储的,负数是以补码的形式来存的。
比如: -1 的存储形式是111111。。。。。1111111 的形式来存的
如果用无符号数的观点(方式)来看的话这个数就是int (无符号)类型的最大数4294967295
void wholarge(int a,int b)
{
int c=a-b;
if((unsigned)c>>(sizeof(int)*8-1)==0) (1)
{
cout<<"a larger"<<endl;
}else
{
cout<<"b larger"<<endl;
}
}
(1) : 先把a b 两个数的差进行强制转换成无符号数,因为无符号数右移必须是逻辑右移,
(逻辑右移是左边补0,算术右移最高位是1,则补1, 是0 则补0)
关于移位问题:
有符号数:左移是逻辑移位,右移(这个不是一定的但大多数都是这么来的)是算术移位。
无符号数:左移右移都是逻辑移位。
还有一点是关于整数在计算机中的是以什么方式来存储的,负数是以补码的形式来存的。
比如: -1 的存储形式是111111。。。。。1111111 的形式来存的
如果用无符号数的观点(方式)来看的话这个数就是int (无符号)类型的最大数4294967295
相关文章推荐
- clang: error: linker command failed with exit code 1 (use -v to see invocation)解决方法
- AugularJS 初入门
- [leetcode 285] Inorder Successor in BST---查找二叉搜索树中某个节点在中序遍历中的后续节点
- ArcEngine环境下合并断开的线要素(根据属性)
- 《内核设计与实现》第五章读书笔记
- 如何使用THashedStringList
- 重构第4天:降低方法(Push Down Method)
- HDU 1010 Tempter of the Bone
- css代码片段第一季
- [网络流24题][CODEVS1915]分配问题(网络流)
- TMS320F28335学习笔记——ADC详解
- 解决sql关键字冲突
- poj 1364 king
- Servlet跳转Jsp的两种方法
- 关于EL表达式中requestScope和param区别
- iOS之页面传值-----单例传值、通知传值
- Json
- 【UR #12】实验室外的攻防战(BIT)
- Material Design Get Started
- NIO提升系统性能