chensheng00 发表于 2012-12-5 14:22:54

keil软件 可以跨进制进行乘除法吗?

                        发现阿莫老大在严格审题中,不知道能不能通过?
                        比如说:直接将单片机P0*25=temp 那么temp这个数是什么进制了呢?

techbaby 发表于 2012-12-5 14:27:32

回去好好看看C语言吧!

自动数值转化
比如:char 和 int 做运算,char先转换成int类型,然后做运算。
      unsigned int 和signed int 做运算,signed int 要先转换为unsignedint后两者再做运算。

不知道上面说的是不是全对,好久都忘了!{:sad:}

hyz_avr 发表于 2012-12-5 14:29:22

楼上的回答不是楼主问的,呵呵.

techbaby 发表于 2012-12-5 14:30:06

LZ的写法都错了,应该是:
temp=P0*25;
temp的类型就是你定义的类型呀,编译器会将计算结果强制转换为temp变量的类型的。

chensheng00 发表于 2012-12-5 14:31:57

techbaby 发表于 2012-12-5 14:27 static/image/common/back.gif
回去好好看看C语言吧!

自动数值转化


额   ,我是说P0口是个16进制啊,0xXX这个类型的,可以直接乘以一个具体的数,比如说10,然后结果存在temp中,假设我是unsignedinttemp;

chensheng00 发表于 2012-12-5 14:35:23

techbaby 发表于 2012-12-5 14:30 static/image/common/back.gif
LZ的写法都错了,应该是:
temp=P0*25;
temp的类型就是你定义的类型呀,编译器会将计算结果强制转换为temp ...

en,是写错了,强制性的啊,那就是unsigned int temp;
                                                temp=P0*25,然后这个结果和把P0转换成十进制之后与25相乘的结果一样么

techbaby 发表于 2012-12-5 14:37:11

hyz_avr 发表于 2012-12-5 14:29 static/image/common/back.gif
楼上的回答不是楼主问的,呵呵.

呵呵,确实是我错了。

原来问的是进制,晕喔!

lizhoubob 发表于 2012-12-5 14:43:02

chensheng00 发表于 2012-12-5 14:35 static/image/common/back.gif
en,是写错了,强制性的啊,那就是unsigned int temp;
                                             ...

呵呵,数值不会因为进制不一样而出现值不一样,例如 20d=14h=10100b. 进制是为了我们人类方便而发明的计数方法。数的的大小固定的。

chensheng00 发表于 2012-12-5 14:44:41

lizhoubob 发表于 2012-12-5 14:43 static/image/common/back.gif
呵呵,数值不会因为进制不一样而出现值不一样,例如    20d=14h=10100b. 进制是 ...

{:3_48:} 原来如此,谢谢各位前辈

techbaby 发表于 2012-12-5 14:46:57

chensheng00 发表于 2012-12-5 14:35 static/image/common/back.gif
en,是写错了,强制性的啊,那就是unsigned int temp;
                                             ...

别纠结进制的问题了。
对计算机而言,只有二进制,即0和1。

我们所说的十六进制,八进制,十进制等等,只是为了方便我们记忆和识别而已。

在C语言中,编译器会帮我们处理数值转换的问题。

如:0xFF就是255,他们由编译器翻译成二进制码都是1111 1111

页: [1]
查看完整版本: keil软件 可以跨进制进行乘除法吗?