我正在尋找一種將2個數字相乘的方法(兩位數) 我使用C編程並使用PIC18F4455芯片以及CCS編譯器。 繼承人的問題:8位系統上的2位數乘法
代碼:
#include<18F4455.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#device ICD=TRUE
#use delay(clock=5000000)
#include<lcd.c> //LCD display source code
#include<kbd_xy.c> //keypad source code
void main(){
char k;
//
//code to retrive keypad input and store in a and b values
//
unsigned long c;
unsigned int a=99;
unsigned int b=1;
while(b<99)
{
c=a*b;
printf(lcd_putc,"%Ld",c);
delay_ms(1000);
lcd_putc('\f');
}
}
的問題是,保存在c的數量不能超過256個,由於芯片是8位。 所以99 * 1給出099 99 * 2給出198但是99 * 3給出41注99 * 3 = 297這就是256 + 41等等......
我正在尋找更好的方法爲了得到真正的結果,他們將通過LCD顯示,所以如果我最終得到4個變量,每個變量都包含一個數字,那就OK了由我。 如果當我做99 * 3我得到這樣的C1 = 7 C2 = 9 C3 = 2和C4 = 0,多數民衆贊成真棒
的問題並沒有多大意義。在C語言中,不管底層硬件是什麼,也不管C語言編譯器如何利用其功能,您必須能夠乘以99乘以99而不會出現任何問題。如果你的編譯器不是一個合規的C編譯器,那麼至少可以這麼說,並且告訴人們它與標準編譯器有什麼不同。 –
順便說一句,如果你打印「long」,它應該是'%ld',而不是'%Ld'。在你的特殊情況下,它應該是'%lu',因爲它是'unsigned long'。 –
我指定了編譯器,並聲明由於硬件限制,我只允許8位整數 – DarthSheldon