C言語関係掲示板

過去ログ

No.235.signed charのとりうる最小の値


No.1425

教えてください。
投稿者---こー(2002/04/18 13:24:28)


signed charのminの値を出力させるには
どのような計算式を用いればよいのでしょうか?
お願いします。

No.1427

Re:教えてください。
投稿者---kikk(2002/04/18 18:09:35)


ども。


>signed charのminの値を出力させるには

signed charのminの値というのが何をさしているのかが、題名からも
内容からもよみとれなかったのですが、処理系でのsigned charの
とりうる最小の値ということであれば、limits.hでSCHAR_MINという
定数が定義されています(他の型の最大値/最小値も)。


では。

No.1432

ありがとうございます。 そして更に教えてください
投稿者---こー(2002/04/19 15:52:02)


>ども。
>
>
>>signed charのminの値を出力させるには
>
>signed charのminの値というのが何をさしているのかが、題名からも
>内容からもよみとれなかったのですが、処理系でのsigned charの
>とりうる最小の値ということであれば、limits.hでSCHAR_MINという
>定数が定義されています(他の型の最大値/最小値も)。

ありがとうございます。
そして、それを用いないで計算して算出するためにはどうしたら
よろしいのですか?

No.1438

Re:ありがとうございます。 そして更に教えてください
投稿者---中級者X(2002/04/19 23:48:06)


>>ども。
>>
>>
>>>signed charのminの値を出力させるには
>>
>>signed charのminの値というのが何をさしているのかが、題名からも
>>内容からもよみとれなかったのですが、処理系でのsigned charの
>>とりうる最小の値ということであれば、limits.hでSCHAR_MINという
>>定数が定義されています(他の型の最大値/最小値も)。
>
>ありがとうございます。
>そして、それを用いないで計算して算出するためにはどうしたら
>よろしいのですか?

少しは自分で考えましょう。

nビットで表せる符号付整数:2n-1-1〜-2n-1

  int bit = sizeof(char) * 8;
  int schar_min = -1 * (int)pow(2, bit - 1);


No.1440

signed charのとりうる値
投稿者---kikk(2002/04/20 01:42:17)


ども。


>そして、それを用いないで計算して算出するためにはどうしたら
>よろしいのですか?

負数の表現に2の補数を使うことを仮定してよいのなら、
一例として、以下のようにして求めることができます
(この仮定がはずれることはまずありませんけど)。

/* 最大値 */
((unsigned char)-1)>>1
/* 最小値 */
~(((unsigned char)-1)>>1) /* 最大値のビット反転 */

上記の式の型はintなので、必要があればキャストしてください。


limits.hによって、これらの値を得るために処理系の特徴を考慮して
何らかの方法で算出して求める、ということをしなくてもよくなります。
ねんのため。。

ちなみに、LSI Cでは、limits.hのSCHAR_MINと、上記のような方法で
求めた値とは1だけ違っています。


では。

No.1441

Re:signed charのとりうる値
投稿者---こー(2002/04/20 17:38:09)


-1)>>1
>/* 最小値 */
>~(((unsigned char)-1)>>1) /* 最大値のビット反転 */
>
>上記の式の型はintなので、必要があればキャストしてください。
>
>
>limits.hによって、これらの値を得るために処理系の特徴を考慮して
>何らかの方法で算出して求める、ということをしなくてもよくなります。
>ねんのため。。
>
>ちなみに、LSI Cでは、limits.hのSCHAR_MINと、上記のような方法で
>求めた値とは1だけ違っています。
>
>
>では。

ありがとうございます。

最初limits.hを使用しました。
そこで、値を確認できました。
2の補数を用いる事に僕も着目しました。
そこで、limits.hと比較した結果
おっしゃった通り1違っていたので
消えた1について考えていました。


戻る


「初心者のためのポイント学習C言語」 Last modified:2002.06.22
Copyright(c) 2000-2002 TOMOJI All Rights Reserved