打印

如何快速判断一个字节某一位是0还是1?不是编程,是口算!

[复制链接]
5098|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
音乐乐乐|  楼主 | 2008-2-19 04:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
xwj| | 2008-2-19 06:06 | 只看该作者

MSB和LSB很容易判断啊

使用特权

评论回复
板凳
tyw| | 2008-2-19 07:07 | 只看该作者

左,右环移后判进位位"c"

如有位操作指令,直接判JB0或JB8(好象JB8没有的,哈哈)

使用特权

评论回复
地板
liudewei| | 2008-2-19 09:11 | 只看该作者

and 某一位,如判断递位,and 00000100b

可以将这些位建个数组:以8位为例;
char ANDTAB[8]={00000001b,00000010b,..10000000b};

判断:x&&ANDTAB[a]是否为0或1,x被判断的数,a判断的位

使用特权

评论回复
5
音乐乐乐|  楼主 | 2008-2-19 09:20 | 只看该作者

呵呵,偶没说清楚,不是编程,是口算啊

使用特权

评论回复
6
dld2| | 2008-2-19 09:23 | 只看该作者

晕了

使用特权

评论回复
7
xwj| | 2008-2-19 09:28 | 只看该作者

我也说的是口算,MSB和LSB真的很容易判断啊

不过中间的位不好判断


严重BS LZ改主题贴的行为...

使用特权

评论回复
8
音乐乐乐|  楼主 | 2008-2-19 11:10 | 只看该作者

呵呵,ls,不改主题怕很多人因误解而浪费时间啊

 最高和最低是好判断,我是指任意位嘛,呵呵,不知道能不能找到什么巧妙的方法。

使用特权

评论回复
9
zlgmcuCHTZ| | 2008-2-19 11:46 | 只看该作者

第N位,就把192除以2的N次方

看小数是否大于等于0。5了,小于就是0,否则为1

使用特权

评论回复
10
tyw| | 2008-2-19 12:29 | 只看该作者

立日乐乐乐,晕衣支

沙法漏的,成沙滩了拉,哈哈
小乐乐又在玩死马特异功能了拉

使用特权

评论回复
11
stycx| | 2008-2-19 12:35 | 只看该作者

学珠心算吧,听说比口算还快

使用特权

评论回复
12
音乐乐乐|  楼主 | 2008-2-19 12:37 | 只看该作者

ls不对,135二进制为10000111

如果按照最右边为第一位,那么第8位:2^8=128,135/128=1.0546875,小数小于0.5,但位为1。

如果按照右边为第0位,那么第3位:2^3=8,135/8=16.875,小数大于0.5,但位为0。
 呵呵,还得改进 啊

使用特权

评论回复
13
xwj| | 2008-2-19 14:49 | 只看该作者

先统一一下所谓的“第3位”到底指的哪一位再说

9楼的方法是对的,只是他所说的位数最右边是第一位,而不是第0位!
12楼的再去算过!!!


我的看法是依次判断是否大于128、64、32、16,大于就减掉它,数一小了就很好看了,而且心算的话加减法比乘除法容易
而且,16进制下只有大于9的A~F不好判断,0~9还是很容易看一眼就转成二进制的,一般只要针对高低半字节减128或16即可看出
把数字适当除以2、4、8,则更容易快速的降位、计算

比如135,-128=7,然后一眼就能看出就是二进制1000,0111

使用特权

评论回复
14
yczhang| | 2008-2-19 15:21 | 只看该作者

同意9楼

LZ不会验算,2^8是256而不是128

使用特权

评论回复
15
音乐乐乐|  楼主 | 2008-2-19 16:13 | 只看该作者

呵呵,是偶搞错了,9楼的方法可行,配合13楼的方法,这样

判断最高位:大于等于128,为1,否则为0;
其他位:除2的n次方,余数大于等于0.5为1,否则为0;

多谢各位,偶觉得这个已经比较简单的了,呵呵。

使用特权

评论回复
16
computer00| | 2008-2-19 16:19 | 只看该作者

有计算器不用,晕...

使用特权

评论回复
17
mikesullen| | 2008-2-20 03:03 | 只看该作者

二进制的原理你们都忘了

不停的除2取余就好了。。。。

135=10000111

135/2=67........1
67/2=33.........1
33/2=16.........1
16/2=8..........0
8/2=4...........0
4/2=2...........0
2/2=1...........0
1/2=0...........1

口算应该没问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

350

主题

2293

帖子

3

粉丝