トップページ > プログラム > 2016年05月21日 > 4rVMGQEl

書き込み順位&時間帯一覧

31 位/223 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000002001000000000003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
744
C#, C♯, C#相談室 Part90 [無断転載禁止]©2ch.net

書き込みレス一覧

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を使うのは一つの手だろう。
しかし、見た目的に何ビットのマスクなのか分かりにくくなるので、
この場合はあまり使いたくはないな。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。