大小的比较和十进制没什么区别的,不同位数,位数大多的大,相同位数,各个位从左到右数字大的大,或者可以把它们转换为十进制后再比较。
二进制转十进制方法:按权展开求和
规律:个位上的数字的次数是0,十位上的数字的次数是1,......,依奖递增,而十分位的数字的次数是-1,百分位上数字的次数是-2,......,依次递减。
注意:不是任何一个十进制小数都能转换成有限位的二进制数。
扩展资料:
二进制数特性
1、如果一个二进制数(整型)数的第零位的值是1,那么这个数就是奇数;而如果该位是0,那么这个数就是偶数。
2、如果一个二进制数的低端n位都是零,那么这个数可以被2n整除。
3、如果一个二进制数的第n位是一,而其他各位都是零,那么这个数等于2^n。
4、如果一个二进制数的第零位到第n - 1位都是1,而且其他各位都是0,那么这个数等于2^n - 1。
5、将一个二进制数的所有位左移移位的结果是将该数乘以二。
参考资料来源:百度百科-二进制
参考资料来源:百度百科-十进制
现有 有符号二进制数,与正的十进制比较大小,怎样先判断它为正数,然后再怎样比较?谢了
追答如果二进制也是正的,可以直接比;
如果二进制是负的,那么把二进制按位取反,再加1后,再与十进制比大小。
a 是一个读取的有符号二进制数,需要 与 15 比较大小,我是先把正数数判断出来,然后在比较你看我的程序对不?非常感谢
if( (a) & (0x80) != 0x80 )
{
if( (a) |(0x0f) != 0x0f ) M0 = 0;
}
首先确保a是signed char 型变量。
那么你的程序这样写就行了。
if( (a) & (0x80) != 0x80 )//如果是正数
{
if( a>15 ) M0 = 0;
}
不过,你那种写法也对,但很难让人看懂。
能否给点具体的程序?谢谢