プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 このページをアンテナに追加 RSSフィード

 iTunes Music Store(Japan) なかのひと あわせて読みたいブログパーツ
|

0001 | 00 |
2004 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2008 | 01 | 02 | 03 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 |
2010 | 03 | 04 | 06 | 07 | 09 | 10 | 11 |
2011 | 01 | 02 | 10 |
2012 | 04 |
2013 | 01 | 05 | 06 | 07 | 08 | 10 |
2014 | 02 | 03 | 05 | 09 |
2015 | 04 |
2016 | 09 | 11 | 12 |
はてな一覧
アンテナに追加
私のアンテナ
私のダイアリー
私のアーカイブ
私のアイデア
私のブックマーク
私のグループ
私のキーワード
ニュース系、今まで続いているシリーズモノの読み物
dKingyo Utility Toolkit Projectのリリース情報
やっぱり暗号化は大人の味(笑)
プログラムのパッキング方法を調べよ
ココが厳しいよMinGW
ライブラリアン通信
ゲームプログラミングどうしよう
CRCについて
ビット演算練習
d金魚の今更Ajax
Windows Tips
VC6 Tips
Win32 WTL Tips
Ruby for C++ User
Ruby Tips
今日のRubyで嵌った事
正規表現PIECE
書きかけ
続く・・・

私のダイアリーの人気記事
新しくブックマークされた記事


あまり、役に立たなそうな個人的に調べた情報や妄想に耽った事、今 勉強している事ヒソヒソと公開していたりします。 | 登録してくれている方々 | d金魚にメール | 当サイトは640x480の画面解像度に対応しています。
日記へのリンク、アンリンクはフリーですが、selfタグのついている部分のコンテンツの引用はご遠慮願います。ご協力よろしくお願いします。


2007-04-28 ビット演算練習 part11

[][][]Ruby Tips / mビット目にnビット目の値を入れる。 Ruby Tips / mビット目にnビット目の値を入れる。 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク Ruby Tips / mビット目にnビット目の値を入れる。 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

Powered by dKingyo 明快入門 | TOEFL 突破 | VB2005 | Linux | シューティング

http://d.hatena.ne.jp/studiokingyo/20070208

にてよく分からなかった。

「mビット目にnビット目の値を入れる。」について考えてみました。


CよりRubyのようなインタプリタの方が試行錯誤しやすいのでRubyで書きました。*1

Cへの移植も容易でしょう。


def flag_down_n(r32,m)
 return r32 & (~(1 << m));
end

#r32のmビット目にa32のnビット目の値を入れる。
def f(r32,m,a32,n)
 a = (a32 & (1 << n))
 b = a >> n;
 r32 = flag_down_n(r32,m)
 r32 = r32 | (b << m)
 return r32
end

#p flag_down_n(0xff,3)

# 01111111の7bit目に01000000の6bit目の値を入れる
p f(0x7f,7,0x40,6)

*1:それだけ試行錯誤したという記録ということでその痕跡が見えますがあまり気にしないで下さい。

2007-02-08 ビット演算練習 part10

[][][]補数表現が分からないプログラマー 補数表現が分からないプログラマー - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 補数表現が分からないプログラマー - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

未だに補数表現がいったい何なのか良く分かりません。頭の中で上手くVisualizeされないのです。

VTK*1ビックリなくらいに・・・。

と、いうことで今までやってきたわけですが・・・

http://d.hatena.ne.jp/studiokingyo/00010020#c1162229669

なる質問がきました。むっちゃんさんありがとうございます。

はじめましてCは解かりませんが、補数は笑えました・・・

笑われちゃったよ (/ω\) ハジカシー


で、ビットの配置を動的に変更していく様な操作は可能でしょうか??

どこかで 同期用のコードが必要でしょうが、制御系(FA)のPLCだとビット操作楽なのですが コード(高度)言語だといまいちビット操作に悩みます。

PLCちょっと調べてみました。

http://tinyurl.com/2ebrwz

なるほど。ハードウェア系ですね。


例えば 変数 in_X0chとout_Y1chが16ビットデータとすると

out_Y1ch.5 = in_X0ch.10 で Xの11ビット目がYの6ビット目に渡される・・・

こんな操作は 可能でしょうか。

すみません。ビット演算に関しては中学生レベルなのですが・・・。

SOMEONE HELP ME!!! Σ(T▽T;) ぐわわぁぁ〜ん!

おそらくtemplateとしては

if(ごにょごにょ){
 Xの11ビット目がYの6ビット目に渡される
}

もしくは上手くいけば

 Yの6ビット目 = (ごにょごにょによって)

他力本願タグを要請します!!!


追記:

http://d.hatena.ne.jp/studiokingyo/20070428

にてソースコードを掲載しました。

2006-02-25 ビット演算練習 part9

2005-08-31 ビット演算練習 part8

[][]4byte符号無し整数に何byte残っているかを調べる。 4byte符号無し整数に何byte残っているかを調べる。 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 4byte符号無し整数に何byte残っているかを調べる。 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

SNOW2は4バイト毎にデータを暗号化するので3バイトのデータを暗号化する際1バイト余ってしまう。このパッドを捨ててしまうのも良いとは思うのだが、何とかして使う場合どうすれば良いだろうか。とりあえず、保存領域を私は用意してその残ったバイトを蓄積しておくことにした。

で、残っているバイト数を蓄積している変数から知るための式を考えてみた。


考えてみた結果・・・

解無し。

あまりに不毛だった・・・。

え、何故かって?

あまった数バイトが0だったら数えられないやんTT

素直に変数つけます(><)

[][]いろいろあってSNOW2ライブラリの設計を変えようと思う。 いろいろあってSNOW2ライブラリの設計を変えようと思う。 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク いろいろあってSNOW2ライブラリの設計を変えようと思う。 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

どうも、64バイト単位に暗号化する機構と4バイト単位で暗号化する機構を一緒に出来ないのでここは二つを分けてしまうことにした。

しかしながら、二つあっても意味無いのでプールを生成する64バイト単位のほうで実装していこうと思う。

前の方針で設計したタイプもとりあえず残しておくつもりだが。

メルセンヌツイスターのライブラリが変数保存に何故プールを使用しているかが少し分かった気がする。*1

*1:これとはまったく違う理由でそうなっているのは承知だが・・・

2004-11-09 ビット演算練習 part7

[]1の歩数表現。こんな風に使うらしい 1の歩数表現。こんな風に使うらしい - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 1の歩数表現。こんな風に使うらしい - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

某、ソケットライブラリにて。

SOCKET型というのは環境によってint型かもしれないしunsigned int型(以下 uint)かもしれないという厄介な型だ。

で、有効でない値を示す場合、int型だと-1 uint型だとUINT_MAX(uintが示せる最大の値)

ムカツク事にuint型の変数に以下のようなプログラムを組んでも上手く動かない事が多い。

if(uint_value == -1){
  printf("...なんたらかんたら");
}

で、そのソケット型の有効でない値を示す#defineに以下のような定義になっていた。

///状況に応じて反転です!!!
INVALID_SOCKET  (SOCKET)(~0)


私にとって、「これは盲点でしたな・・・」 といった感じか?

[][]1の補数表現?2の補数表現 2005/07/17 1の補数表現?2の補数表現 2005/07/17 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 1の補数表現?2の補数表現 2005/07/17 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

上記の記述の補数表現についての言い回しは間違っている気がする。

google:2補数表現

http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/fusu.htm

google:"1の補数表現"

http://www.mew.org/~kazu/bsdmag/cksum.html

でちょっと納得?

現在となっては補数が何かはもう覚えてない。(泣)

たかひろたかひろ 2005/07/14 09:34 2の歩数表現の特徴と組み合わせを教えてください。

studiokingyostudiokingyo 2005/07/17 19:16 追記に参考URLを張っておきました。^^

2004-10-07 ビット演算練習 part6

[][][]オーバーフロー、アンダーフローチェック オーバーフロー、アンダーフローチェック - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク オーバーフロー、アンダーフローチェック - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

とりあえず、アンダーフローチェックはやね本2*1に掲載されていたのでこれは完了?と言う事で

オーバーフローについても考えてみようと思う。

・・・相変わらず、IQヒクイナーと思うよ、こんな事でイチイチなやんでいる私。

とりあえずunsigned int 型のオーバーフローは以下のようなやり方でチェックできるんじゃない?と言う事で掲載・・・

//UINT_MAXはunsigned int 型が表現できる最大値
if(UINT_MAX- a1 < a2)
{//over flow

}

unsigned int x = a1 + a2
//注意:このプログラムは間違っています。

多分、これでイイヨウナワルイヨウナ・・・

アレ?

ナに電波なこと書いているんだ・・・ スマン、これは間違い・・・

で、ちょっと考えた結果・・・

template<class T>
struct CheckOverflow{
  ///a1 + a2をするとき
  bool operator()(const T a1,const T a2){
    T maxv = std::numeric_limits<T>::max();
    T halfv = maxv / 2 ;
    T x = a1,y = a2;
    if(x < y){
      SWAP_NUM(x,y);
    }
    if(x > halfv + 1){
      if(y >= halfv){
        return true;
      }
    }
    return false;
  }
};

え?if多すぎ?・・・

ゴメン、私の頭だとこれが限界・・・。゜(゜´Д`゜)゜。

公式はあるのでしょうか?

追記:http://d.hatena.ne.jp/bake_3572/20050509/p3に、足し算のオーバーフローアンダーフローチェックのソースコードが書いています。



[][]C++ ストリーム出力の整形 (std::hex std::boolalpha とか C++ ストリーム出力の整形 (std::hex std::boolalpha とか - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク C++ ストリーム出力の整形 (std::hex std::boolalpha とか - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

http://hp.vector.co.jp/authors/VA025590/stream-format.html

*1:Windowsプロフェッショナルゲームプログラミング2のP214

2004-09-22 ビット演算練習 part5

[]n番目のビットだけをマスクする。nからm番目のビットをマスクする。 n番目のビットだけをマスクする。nからm番目のビットをマスクする。 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク n番目のビットだけをマスクする。nからm番目のビットをマスクする。 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

とりあえず、前回のビット演算練習でちょこっとだけ話題になった?

ビットを数えるアルゴリズム

http://www.st.rim.or.jp/~phinloda/cqa/cqa15.html

http://www.st.rim.or.jp/~phinloda/cqa/cqaindex.html

ココに掲載されているのにHacker's Delightと同じ奴が載っていた。

結構メジャーなのね^^;




さて、タイトル通りなのだが、n番目のビットだけをマスクする。nからm番目のビットをマスクする。と言う事で考えていこうと思う。

template of

///スマン、これヨクワカラン
#define DKUTIL_MASK_BIT(bit,n) bit &= 1 << n
#define DKUTIL_MASK_BIT_RANGE(bit,min_,max_)

[]発表 発表 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 発表 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

#define DKUTIL_MASK_BIT(bit,n) bit &= (1 << n)
#define DKUTIL_MASK_BIT_RANGE(bit,min_,max_) bit &= 
  (^(0xFFFFFFFF >> 32 - min_)) & 
  (0xFFFFFFFF >> 32 - max_)

ちなみに上記は間違っている。

やっぱり素直にHacker's Delight買うか?(´Д⊂グスン マニィがーーー

#define DKUTIL_MASK_BIT(bit,n) (bit &= (1 << n))

//(bit &= ( (0xFFFFFFFF << min_ ) >> (32 - max_) ) ) 
//( bit &= (  ( 0xFFFFFFFF << ( max_ - min_ )  )  & 
 ( 0xFFFFFFFF >> ( 32 - max_ ) )  ) )

#define DKUTIL_MASK_BIT_RANGE(bit,min_,max_) \
  (bit &= ( 0xFFFFFFFF >> ( 32 - max_ - 1 )) & (0xFFFFFFFF << (min_)) )

もうちょっとふんばって小さい脳みそをフル回転・・・

とりあえず、OKみたい?

ビット演算って自転車に乗れるか乗れないかみたいなもの?



[][]今回のビット演算ではまったところ 今回のビット演算ではまったところ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 今回のビット演算ではまったところ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

  • (~(0xFFFFFFFF << max_))
  • (0xFFFFFFFF >> (32 - n))

どちらも - 1しないと仕様に合わない^^;

配列と同じように0番目から数える仕様のため。

2004-09-19 ビット演算練習 part4

studiokingyo2004-09-19

[][]アンダーフロー、オーバーフローチェックの公式はあるの? アンダーフロー、オーバーフローチェックの公式はあるの? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク アンダーフロー、オーバーフローチェックの公式はあるの? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

最近、とある数ととある数を足したり引いたりした時、オーバー,アンダーフローしたら一回のチェックで知る事が出来るビット演算を考えなくては!

との命題を受信したのでちょっと考えてみた・・・。

  • アセが確実か?
  • 今の所思いつかない。
  • やね本2に書いていたような・・・

公式があるのか!?


最近、この手のエラーに対して自分に厳しくなってきた^^;

[]ビット関係 リンク ビット関係 リンク - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク ビット関係 リンク - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

int型のビット数を調べる方法(for使うのはちょっとねぇ)

http://www.bohyoh.com/CandCPP/FAQ/FAQ00018.html

初級C言語Q&A(15)

http://www.st.rim.or.jp/~phinloda/cqa/cqa15.html#Q2


オーバーフローについて。

ちょっとしらべてみたら、RadiumSoftwareさんの所で話題になっていた。

http://www.radiumsoftware.com/0408.html#040831

プログラミング所感 64ビット整数のビット数を求める関数 (結構私好みなページ^^

http://plaza.harmonix.ne.jp/~fakira/turedure/cprog_98.htm#980727

[]この問題についての見当違い この問題についての見当違い - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク この問題についての見当違い - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

オーバーフローする時はアンダーフローしない。

アンダーフローする時はオーバーフローしない。

よってこの命題は矛盾する(爆)

skysky 2004/09/23 09:57 http://d.hatena.ne.jp/yaneurao/20040225
Hacker’s Delightはビット演算系の本らしいですよ。英語ですが。

skysky 2004/09/23 10:01 ってビット数を調べるのでしたか。やねうらおさんの日記の関数nlzに ~0U を引数に与えれば良いのではないですかねぇ。

studiokingyostudiokingyo 2004/09/23 17:06 あ、どうもです。m(_ _)m Hacker’s Delight... イイですねぇ〜
ちょっと話題が見にくくてスミマセン。 ビット演算を数えるのは大丈夫なのですが、「オーバーフローとアンダーフローが一発(一回の比較)で分かる」ような書き方はないかな〜と。(もしやこのnlzを使えば上手く一発で分かるとか?ですか?マズイ、私修行足りないかも・・・)

2004-08-25 boost::crcをC言語に移植中・・・。

[]ビット演算練習 part3 (定数からビットにする?(なんかうまい言い回しがないナァ)) ビット演算練習 part3 (定数からビットにする?(なんかうまい言い回しがないナァ)) - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク ビット演算練習 part3 (定数からビットにする?(なんかうまい言い回しがないナァ)) - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

  • (~(0x80000000 >> (Bits )) << 1) + 1;*1
  • ( (0x00000001 << Bits) & (0xFFFFFFFF >> (32 - Bits) );*2
  • (0xFFFFFFFF >> (32 - Bits));//これらしい。

*1:ナンカ、意味が無いな・・・。

*2:これも間違い

2004-07-18 ビット演算練習 part2

[][]フラグアップ、フラグダウン、マクロ #define C言語 フラグアップ、フラグダウン、マクロ #define C言語 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク フラグアップ、フラグダウン、マクロ #define C言語 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

どもども、dです。

最近、ちょっと疑問が・・・、やはりビット演算は慣れるまで難Cのです。

前回の苦闘はd:id:studiokingyo:20040522ですが、

今回は、ビット入れ替えではなくフラグアップダウンについての苦闘です。

今、こんな感じでフラグアップ、ダウンのマクロを実装しています・・・。(うわ〜。だせぇ。

///スマン、こんなダサい実装で・・・。
#define DKUTIL_FLAG_DOWN(x,n) {(x & n) ? x |= (x^n) : 0;}//{x |= (x^n);}
///フラグアップマクロ。これは常識。
#define DKUTIL_FLAG_UP(x,n) {x |= n;}

実の所・・・、私、これしかやっぱり思いつかないです・・・。

テストの通り、数学的思考能力が弱いらしい。(´Д⊂グスン

三項演算子もif文も使わないで、ビット演算だけでフラグダウンの処理は記述できないだろうか?

どうか、皆様、公式がありましたら是非、コメントやメール、お待ちしております。m(_ _)m

[]これはどうか? これはどうか? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク これはどうか? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

  • ~を使う・・・。
  • 定型文を教えていただきました。id:paserry氏に感謝。m(_ _)m ありがとうございます。

[][][][]定型文丸暗記 ビットフラグ演算 定型文丸暗記 ビットフラグ演算 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 定型文丸暗記 ビットフラグ演算 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

///http://d.hatena.ne.jp/paserry/ paserry氏に教えていただく。m(_ _)m 
#define DKUTIL_FLAG_DOWN(x,n) {x &= ~n;}
///フラグアップマクロ。これは常識。
#define DKUTIL_FLAG_UP(x,n) {x |= n;}

///UINT系変数の右からNビット目のフラグをアップさせる。

#define DKUTIL_FLAG_UP_N(x,n) DKUTIL_FLAG_UP(x,(1 << n))
///@see DKUTIL_FLAG_UP_N() 右からnビット目のフラグをダウンさせる。

#define DKUTIL_FLAG_DOWN_N(x,n) DKUTIL_FLAG_DOWN(x,( 1<<n ))

と、言うことで、これは丸暗記事項・・・。

あと、DKUTIL_FLAG_UP_N()とかつけてみた。

かなり、フラグの管理には惑わされれた経験があるので、

一時期、ヘナチョコクラス作った事ある。

http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/dkingyoutility/dkutil/dkutilFlag.h


[]最近、試して見たSTG*1 WARNING FOREVER 最近、試して見たSTG*1 WARNING FOREVER - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 最近、試して見たSTG*1 WARNING FOREVER - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

ボスを倒していくシューティングです。ボスがだんだんパワーアップして行きます。

個人的に思うに、これははっきり言って凄い。

私はまったく、このアルゴリズムを考える事が出来ない・・・。

再現はコスト度外視で出来そうだが、どうも上手く行くとは限らなそう・・・。

http://www18.big.or.jp/~hikoza/

こちらからダウン。

[][]暗号系 リファ 暗号系 リファ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 暗号系 リファ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

http://www.google.com/search?q=%2Brc6+%2BCreateFile&sourceid=mozilla-search&num=20

なんかキ・キ・キ・キタ━━━━━━(゜∀゜)━━━━━━!!!!みたい。

そうかそうか。RC6のソースがほCか。

スマン、資料少ないからあと、1年程でNYSLで公開するから勘弁・・・。

後・・・Rijndaelは実装できているんだけど・・・幾分、ライセンスが・・・

d:id:studiokingyo:20040716#p2

paserrypaserry 2004/07/16 23:57 はじめまして。こんばんわ。x &= ~nじゃだめでしょうか?私もビット演算苦手なのではずしてそうですが・・

studiokingyostudiokingyo 2004/07/17 00:43 こんばんは、はじめまして、コメントありがとうございます。C言語のビット演算子を確認して~を使ってはどうか とちょっと紙とエディタをじろじろ見ていいましたら、コメントを書いて下さる方が私の日記にもいらっしゃったんだ〜。とちょっとジーンとしてしまいした^^

paserrypaserry 2004/07/17 02:10 うんうん。コメントもらうとうれしいですね。特にプログラミングの話してると誰かみたりするのかなーとか、そういう不安がありますからね^^;d

2004-05-22 ビット演算練習

[][][]アホクサ エンコード デコード アホクサ エンコード デコード - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク アホクサ エンコード デコード - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

ビット演算がちと苦手だったので確認、練習という事でちと組んでみた。

どれくらい苦戦したかは以下のコードを見れば分かると思う・・・(爆

C言語初めてエーット・・・1〜2〜3〜4?年?

未だにビット初心者のようで・・・。

テンポラリバッファとか演算回数を減らしたりできるかも!?

///かなりばれ易い?暗号?とも呼べないな・・・。
inline BYTE encode_byte(BYTE a){
  BYTE x = 0,y = 0;
  //BitODS(a);
  x |= (BYTE)((a & 0x0f) << 4);
  x |= (BYTE)((a & 0xf0) >> 4);
  //BitODS(x);
  y |= (BYTE)((x & 0x33) << 2);
  y |= (BYTE)((x & 0xCC) >> 2);
  //BitODS(y);
  /*y |= (BYTE)((x & 0x0C) << 2);
  y |= (BYTE)((x & 0x03) >> 2);
  BitODS(y);
  */
  //y ^= 0x38;
  y ^= 0xaa;
  
  return y;
}
///encode_byte()のdecode
inline BYTE decode_byte(BYTE a){
  BYTE x = 0,y = 0;
  a ^= 0xaa;
  //a ^= 0x38;
  //BitODS(a);
  x |= (BYTE)((a & 0x33) << 2);
  x |= (BYTE)((a & 0xCC) >> 2);
//  BitODS(x);
  /*x |= (BYTE)((a & 0x0C) << 2);
  x |= (BYTE)((a & 0x03) >> 2);
  BitODS(x);
  */
  y |= (BYTE)((x & 0x0f) << 4);
  y |= (BYTE)((x & 0xf0) >> 4);
  //BitODS(y);
    
  return y;
}

0001-00-20 ビット演算練習 番外編 C言語での掛け算最適化集

[][][][][]C言語での掛け算最適化集 C言語での掛け算最適化集 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク C言語での掛け算最適化集 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

やね本2に載っているC言語での掛け算最適化がなんか2005年1月現在で存在しないので私が勝手に考えてみるコーナー

  • 2のn乗の値はビットシフトだよね?

むっちゃんむっちゃん 2006/10/31 02:34 はじめましてCは解かりませんが、補数は笑えました・・・
で、ビットの配置を動的に変更していく様な操作は可能でしょうか??
どこかで 同期用のコードが必要でしょうが、制御系(FA)のPLCだとビット操作楽なのですが コード(高度)言語だといまいちビット操作に悩みます。
例えば 変数 in_X0chとout_Y1chが16ビットのデータとすると
out_Y1ch.5 = in_X0ch.10 で Xの11ビット目がYの6ビット目に渡される・・・
こんな操作は 可能でしょうか。

Program | Debug | dKingyo Utility Toolkit | library | D言語 | 御本とか | 備忘録 | テクニック | WayBack | 格言 | 英語 | 他力本願 | news | software |

デースケドガー