C语言是如何比较两个十进制整数的大小的?是先把它们化成二进制...3
发布网友
发布时间:2023-11-05 08:34
我来回答
共2个回答
热心网友
时间:2024-03-07 22:01
你好 计算机内的任何数处理都是以二进制形式处理的
从本质上讲 C语言比较两个数的值
if(a>b)
就是运用机器命令CMP
(CMP是一个汇编指令,对应一个机器码,这一命令是由CPU定义的,翻翻你电脑的CPU说明书,上面有写)
CMP a, b
这里实际上CPU对a b的值进行了减法操作,但不保存操作结果。然后通过判断SF,ZF,CF,OF,PF寄存器的状态,就知道这两个值谁大谁小了。
说的通俗点就是CPU用这两个二级制数相减 看是会得到负数 零 还是正数,来判断两个变量的大小
参考
SF:代表最高位是否为1,如果为1的话,SF就置1;ZF:代表的是运算结果是否为0,如果为0的话,ZF就置1;CF:代表的是运算过程中最高但是否有进位或借位,如果有的话,CF就置1;PF:代表的是运算结果低8位是否有偶数个1,如果是偶数个1的话,PF置1;
建议朋友学学汇编语言和编译原理的知识,自然就明白了。
热心网友
时间:2024-03-07 22:03
在C语言中比较两个十进制整数的大小,就像我们做小学数学题一样,直接比较两个数的大小就可以了。比如:1与2比较,那就是2大于1,没有必要把它转化成二进制在比较!就你这个程序而言,可以这样写代码:
#include<stdio.h>
void main()
{
int a=100,b=200;
if(a>b) printf("%d\n",a);
else printf("%d\n,b);
}
这是输出两个给定数中的最大值。
希望能帮助到你!