投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/11/12 12:21:57
>> 同じ色ではあるけれども「負」から「正」に変わってしまうという事なんですね。?
&H80000000 ~ &FFFFFFFF の範囲の値を負数として扱うのか、正数として扱うのか、
符号付きと符号なしの違いということになります。


たとえば Byte 型は 0~255 の範囲の 256種の値を示せます。
SByte 型は -128~127 の範囲の 256 種ですよね。

これらの型は 1バイト(8bit)幅であり、下記のような値をとります。

Byte  内部バイナリ    SByte
----  --------------  -----
0     &H00(00000000)  0
1     &H01(00000001)  +1
2     &H02(00000010)  +2
3     &H03(00000011)  +3
:    :              :
126   &H7E(01111110)  +126
127   &H7F(01111111)  +127
128   &H80(10000000)  -128
129   &H81(10000001)  -127
:    :              :
252   &HFE(11111100)  -4
253   &HFE(11111101)  -3
254   &HFE(11111110)  -2
255   &HFF(11111111)  -1


符号なし整数型(unsigned int)は負数を持たないため、値は0から始まります。
符号付き整数型(signed int)では、最上位ビットを 正負を表す符号ビットとして扱いますので、
最大値は符号なしの半分になってしまいますが、その分がマイナス側の値に割り当てられます。


32bit整数型である UInteger(UInt32) 型と Integer(Int32)も同じ関係です。

最上位ビットが 0 の範囲(&H00000000~&H7FFFFFFF)の範囲では
符号なし整数型も符号付整数型も、等しく 0~2147483647 の範囲を示しますが、
最上位ビットが 1 の範囲(&H80000000~&HFFFFFFFF)の範囲においては、
符号なし整数型は 2147483648~4294967295 を表し、
符号付き整数型は -2147483648~-1 を表すことになるのです。



それと、先の回答への補足ですが。

> 【QBColor の場合】
> コンソール画面で使われいた 16色のみを扱う表現です。
> 使用できるカラーコードは 0~15 の 16 種であり、

この 16 色の色番号は、.NET での ConsoleColor.Black ~ ConsoleColor.White に相当します。
QBColor が必要になることはあまり無いと思いますが、一応参考までに。