C++負の値を符号なしタイプに割り当てる

1092 ワード

1、符号の少ないバイトが符号のあるマルチバイトに与えられた場合、それを下位バイト、上位バイトが符号のビットを補う.2、符号なし文字型が整数型変数に与えられた場合、それを低位バイト、高位バイトで0を補う.3、符号文字型が整数変数に付与されている場合は、下位バイト、上位バイトが符号ビットを補う.4、変換はバイナリベースであると理解され、シンボルビットは元のタイプに従って決定される.通常、値範囲内では問題は発生せず、値範囲を超えるとエラーが発生します.
一、
#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
--------------------------------