diff options
| author | Richard Qin <richard.qin.001@gmail.com> | 2026-09-15 08:16:43 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.001@gmail.com> | 2026-09-15 08:16:43 +0800 |
| commit | 4022e5c95210631e4aceb08eaf9d9071aa5aefc4 (patch) | |
| tree | a5922559836e45fb3459a3d070367912e1035b1a /tests/sysy_lvX/decbinoct.sy | |
| download | rcc-master.tar.gz rcc-master.tar.xz | |
Diffstat (limited to 'tests/sysy_lvX/decbinoct.sy')
| -rw-r--r-- | tests/sysy_lvX/decbinoct.sy | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/sysy_lvX/decbinoct.sy b/tests/sysy_lvX/decbinoct.sy new file mode 100644 index 0000000..8f89adf --- /dev/null +++ b/tests/sysy_lvX/decbinoct.sy @@ -0,0 +1,50 @@ +int main(){ + int n = getint(); + int nb = n; + int no = n; + int nh = n; + int binlen = 0; + int octlen = 0; + int hexlen = 0; + int bin[32]={}; + int oct[32]={}; + int hex[32]={}; + while(nb > 0){ + int bd = nb % 2; + bin[binlen] = bd; + binlen = binlen + 1; + nb = nb / 2; + } + while(binlen > 0){ + binlen = binlen - 1; + putint(bin[binlen]); + } + putch(32); + while(no > 0){ + int od = no % 8; + oct[octlen] = od; + octlen = octlen + 1; + no = no / 8; + } + while(octlen > 0){ + octlen = octlen - 1; + putint(oct[octlen]); + } + putch(32); + while(nh > 0){ + int hd = nh % 16; + hex[hexlen] = hd; + hexlen = hexlen + 1; + nh = nh / 16; + } + while(hexlen > 0){ + hexlen = hexlen - 1; + int hd = hex[hexlen]; + if(hd < 10){ + putch(hd+48); + }else{ + putch(hd-10+65); + } + } + return 0; +} |
