C++負の値を符号なしタイプに割り当てる
1092 ワード
1、符号の少ないバイトが符号のあるマルチバイトに与えられた場合、それを下位バイト、上位バイトが符号のビットを補う.2、符号なし文字型が整数型変数に与えられた場合、それを低位バイト、高位バイトで0を補う.3、符号文字型が整数変数に付与されている場合は、下位バイト、上位バイトが符号ビットを補う.4、変換はバイナリベースであると理解され、シンボルビットは元のタイプに従って決定される.通常、値範囲内では問題は発生せず、値範囲を超えるとエラーが発生します.
一、
-1は、符号11111111の形式に変換され、符号intタイプに変換されると、unsigned charの場合、上位は0を補う.signed char高位補記号ビット.印刷時に符号int型で印刷出力:
二、
128符号なしcharの値範囲で大丈夫です.しかし128は符号char型を超え、バイナリは1000000であり、このとき符号intが付与され、高位拡張符号ビットは-128となる.出力:
三、
出力:
一、
#include
int main(){
//
unsigned char a1 = -1;
signed char a2 = -1;
//
std::cout<
-1は、符号11111111の形式に変換され、符号intタイプに変換されると、unsigned charの場合、上位は0を補う.signed char高位補記号ビット.印刷時に符号int型で印刷出力:
255 -1
--------------------------------
二、
#include
int main(){
unsigned char a1 = 128;
//
signed char a2 = 128;
std::cout<
128符号なしcharの値範囲で大丈夫です.しかし128は符号char型を超え、バイナリは1000000であり、このとき符号intが付与され、高位拡張符号ビットは-128となる.出力:
128 -128
--------------------------------
三、
#include
int main(){
unsigned char a1 = 256;
signed char a2 = 256;
std::cout<
出力:
0 0
ok
--------------------------------