- C#, C♯, C#相談室 Part90 [無断転載禁止]©2ch.net
744 :デフォルトの名無しさん[sage]:2016/05/21(土) 09:31:08.49 ID:4rVMGQEl - 12ビットの符号付き整数値をintにしたい。
12ビットは入力の仕様なので、変えることはできない。 12ビットの値をとりあえずintに入れておき、0x00008000と論理積取って、 負の値のときは0xFFFFF000と論理和を取れば良いと思ったんだが、 0xFFFFF000がlongになって、型が合わないというエラーが出る。 これを回避する手はあるだろうか? 一応、右シフトは符号拡張に対応しているので、左20ビットシフト、 右20ビットシフトで目的は達成できることは確認しているので、 そっちでできなくても問題は無い。
| - C#, C♯, C#相談室 Part90 [無断転載禁止]©2ch.net
745 :744[sage]:2016/05/21(土) 09:33:53.17 ID:4rVMGQEl - あ、値間違ってたw
× 0x00008000 ○ 0x00000800
| - C#, C♯, C#相談室 Part90 [無断転載禁止]©2ch.net
751 :デフォルトの名無しさん[sage]:2016/05/21(土) 12:54:41.58 ID:4rVMGQEl - >>746-750
ありがとう。大体分かった。 元の変数の方をintからuintにキャストで回避すれば良いのか。 シフトの方が速いような気はしていたので、採用するのはそちらだ。 だが、C言語でやってた手法が使えないのは何か負けた気がするので、 気になっていたのだ。 -4096を使うのは一つの手だろう。 しかし、見た目的に何ビットのマスクなのか分かりにくくなるので、 この場合はあまり使いたくはないな。
|
|