HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0328
ctech特定のビットが立っているか調べる8解決


ctech

リンク

2009/3/28(Sat) 10:44:57|NO.24219

ある値の特定のビットが立っているか調べるにはどうしたらよいのでしょうか?
よろしくお願いします。



この記事に返信する


Gugulecus

リンク

2009/3/28(Sat) 11:07:33|NO.24221

ちょっとは過去ログ検索してみたら?
http://hsp.tv/play/pforum.php?mode=all&num=23758



ctech

リンク

2009/3/28(Sat) 11:10:50|NO.24223

はい、もちろん検索して、そこのページまでたどり着いてはいました。
ですが、
1=2^0・・・0ビット目が立ってる
2=2^1・・・1ビット目が立ってる
4=2^2・・・2ビット目が立ってる
これの意味がわからないのです。
0,1,2はわかりますが、どの値を調べているのかが知りたいです。



GENKI

リンク

2009/3/28(Sat) 13:33:39|NO.24230

事前知識が少し必要です。
ビット操作をする場合はまず、数値を2進数で考えます。
例えば、
10進数:11 → 2進数:1011
と言う感じです。ウィンドウズ付属の電卓を使えば簡単に相互変換できます。
この場合、0,1,3のビットが立っています。

これを踏まえてもう一度調べてみてはどうでしょうか。
http://hsp.tv/play/pforum.php?mode=all&num=23758
http://hspdev-wiki.net/?%BE%AE%A5%EF%A5%B6%2F%A5%D3%A5%C3%A5%C8%C1%E0%BA%EE
それと、ビットはHSP独自の考え方ではなくコンピュータ全般で共通しているものなのでググればそれなりに情報出てきますよ。



Gugulecus

リンク

2009/3/28(Sat) 19:16:10|NO.24235

コンピュータについて、数学について、スクリプトについて。
どの時点で分かってなくて、リンクの回答の何がわからないのか伝わってこないのだが。

GENKIさんの例の場合、
10進数で11なら2進数で1011。
11=2^0+2^1+2^3だらか。
つまり0,1,3ビットがたってる。

0ビットがたってることと値が奇数であることは同値だから、
初めの値が奇数なら0ビットがたってる。

1ビット目以降が立ってるかを調べるためには、ビットシフトを使う。
1011(2)=11(10)→101(2)=5(10)→10(2)=2(10)→1(2)=1(10)
(n)はn進数の意味。
この場合、10進数でみて奇数になってるのが、
ビットシフト0,1,3回目だから0,1,3ビットがたってるとわかる。



Sucret

リンク

2009/3/28(Sat) 23:37:26|NO.24237

2進数とは2で桁が繰り上がる…というのはわかりますね?

10進数を2進数に変換するには以下の手順で可能です。
 求めたい10進数の数値を2で割り、その余りを紙にでも書く
 以後はその答えを2で割り、余りを右から左に書いていく
 答えが0(余りは0か1)になるまで続けると求められる。

逆に2進数を10進数にするには
 何ビット目がたっているかを調べる(1桁目が0ビット)
 2の、立っているビットの乗数を求める(3ビット目が立っていれば2^3=8)
 立っているビット全てで行い、その合計が答えになる。

一応表も作ったので参考にでも。
10進数-2進数
0-0000
1-0001
2-0010
3-0011
4-0100
5-0101
6-0110
7-0111
8-1000
9-1001
10-1010
11-1011
12-1100
13-1101
14-1110
15-1111



SYAM

リンク

2009/3/29(Sun) 00:51:51|NO.24238

とりあえず「二進法」を勉強して、そのあと「論理演算」というものをちょっとかじってみれば、速攻で解決するんじゃないかと思います。



ctech

リンク

2009/3/29(Sun) 09:29:01|NO.24239

皆さんありがとうございます。
調べてみます。



ctech

リンク

2009/3/29(Sun) 10:13:19|NO.24240





ONION software Copyright 1997-2023(c) All rights reserved.