このページに関してのお問い合わせはこちら
C言語なら、オレに聞け! <4>
ツイート
737
:
デフォルトの名無しさん
:
2001/07/05(木) 06:52
>>735
こんなんは、どうや?
return ( (n<0) ? ((signed int)-((unsigned int)-n>>b)) : (n>>b) ) ;
738
:
デフォルトの名無しさん
:2001/07/05(木) 07:05
0に向かって丸める方法
正なら単に右算術シフトだけすればいい
負数なら 色々あると思う。
思いついたのは
1)符号反転して処理した後符号反転する
if(n<0) return -(-n>>b); else n>>b;
2) (1<<b)-1を加算してから右算術シフトする
retur ( n +( (1<<b) -1 )&(n
>>32
) )>>b;