易码技术论坛

 找回密码
 加入易码
搜索
查看: 366276|回复: 17

[求助]下面的程序用LAVAX1怎么写?(答对送金币)

[复制链接]
发表于 2005-8-22 15:42:00 | 显示全部楼层
写的好些就给你5个...
从新求一个...
1.如何转2进制?
2.如何判断2进制的每个数位为0还是1?(是让机器判断,不是printf出来我判断...)
发表于 2005-8-22 15:48:00 | 显示全部楼层
看来俺得退居二线,俺没这实力。
哪位想得金币的来答。
[em05]
发表于 2005-8-22 11:03:00 | 显示全部楼层
10进制转换为2进制之后
0  转换后 最高位  是 0 个位也是 0
除了0之外所有的数转换后都是 最高位是1
偶数最个位是  0
奇数最个位是  1
所以你只需要判断是奇偶还是0就行了
[此贴子已经被作者于2005-8-22 14:29:07编辑过]

发表于 2005-8-22 11:29:00 | 显示全部楼层
以下是引用谷虫在2005-8-22 10:21:00的发言:<br>题目:求数A(0~15)转换为2进制后的第1个数字是0还是1.
谢谢...

第一个数是不是指2进制的个位数啊?
为了5个金币,俺拼了……[em02]
PS:谁让俺是穷人……
#define A 11//A从0-255均可
void main()
{if (A&1) printf("最后为1");
else printf("最后为0");
return;
}
发表于 2005-8-22 11:29:00 | 显示全部楼层
汗...
直接 num>>3 右移3位。
发表于 2005-8-22 11:31:00 | 显示全部楼层
难道第一位是指bit3 ?(不清楚)
发表于 2005-8-22 11:50:00 | 显示全部楼层
0~15啊~只有4位的说~
 楼主| 发表于 2005-8-22 12:28:00 | 显示全部楼层
请写出求任意数位的代码.肯定有金送.
发表于 2005-8-22 12:44:00 | 显示全部楼层
#define A 11//A从0-255均可
void main()
{char i,j;
for (i=0;i小于8;i 加加)
{j=0x80;
  j=j>>i;
  printf("%d",(A&j)>>(7-i));
}
return;
}
//晕死,帖子有问题,一些符号显示不出,用中文代替了。
发表于 2005-8-22 15:18:00 | 显示全部楼层
晕倒,为啥只给我2金币?
发表于 2005-8-23 01:13:00 | 显示全部楼层
1.
转二进制字符串,没考虑使用log,以char为例,如果sizeof可用的话也可以任意类型
char bin[9];//二进制字符串
void toBin(char num){//char转二进制串,结果保存到bin
    int pt;//字符串指针
    pt=7;
    while(pt>=0){
    *(bin+pt)=(num&1)+48;
    num=num>>1;
    pt--;
    }
}
本来想正着写,结果写出来是反的-_-||
2.
char Bit(char num,char bit){//若num的bit为0返回0,否则返回非0
    num=num>>(bit+1);
    return num&1;
}
发表于 2005-8-23 15:29:00 | 显示全部楼层
为什么总用移位呢?
第几个bit就是2的几次方.
大于等于128,bit7=1.减去128
大于等于64,bit6=1.减去64
大于等于32,bit5=1.减去32
大于等于16,bit4=1.减去16
大于等于8,bit3=1.减去8
大于等于4,bit2=1.减去4
大于等于2,bit1=1.减去2
最后大于等于1,bit0=1.
char bit[8];
char num;
char a=128;
int count;
for(count=7;count>-1;count--){
   if(num>=a){
      num=num-a;
      bit[count]=1;
   }
   a=a/2;
}
bit[]的每个元素的值就是num每个bit的值.菜就菜吧,闪~~~
发表于 2005-8-23 15:50:00 | 显示全部楼层
位运算要快……
发表于 2005-8-23 15:58:00 | 显示全部楼层
这个程序用硬件的移位就可以实现,而且不用判断,不用做减法,不用做除法
发表于 2005-8-23 16:57:00 | 显示全部楼层
难道lavaX不会把/2编译成>>1?
不会吧!!!
那我以后就狂用位移了.
但是即便是除法也应该只做一次汇编的循环吧,因为是除2(个人感觉).
发表于 2005-8-23 18:09:00 | 显示全部楼层
LavaX不会把/2编译成>>1,因为在负数的情况下/2不等于>>1(LavaX的>>移位是逻辑移位),所以不能进行自做主张的事情.
发表于 2005-8-28 10:14:00 | 显示全部楼层
即然A(0--15)那看A是否大于8不就行了.
 楼主| 发表于 2005-8-22 10:21:20 | 显示全部楼层 |阅读模式
题目:求数A(0~15)转换为2进制后的第1个数字是0还是1.
谢谢...
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-5-1 06:03 , Processed in 0.012798 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表