シンボル数とシンボル数なしの変換


次のセグメントがあります.
char ch=-1;
printf(“%02x,%02x”,ch,(unsigned char)ch);

出力:
A -1,-1 B ff,ff C ffffffff,ff D ff,ffffffff
正解:C%02 xは出力が最低2ビットで、補完0に足りないことを示している.1番目のch=-1、負数を32ビットに広げるには1を補う必要があるので、ffffffff 2番目の先が符号なし数ff(255)に変換され、正数拡張0は、最低出力2ビットであるためff
符号なし符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化符号化
シンボル数とシンボル数のない変換のルールがあります.数値は変更される可能性がありますが、ビットモードは変更されません.強制タイプ変換の結果は、ビット値を一定に維持し、これらのビットを説明する方法を変更しただけです.printfが数値を出力する場合、インジケータ%d、%u、%xで1つの数値を符号付き10進、符号なし10進、16進の形式で出力します.
数値のビット表現を拡張します.異なる文字長の整数間で変換し、数値を一定に維持します.小さいデータ型から大きいタイプに変換します:(1)ゼロ拡張:シンボル数なし.(2)シンボル拡張:符号化数、すなわちシンボル数あり.
カットオフ数値wビット数xをkビット数にカットオフすると、高いw-kビットが破棄され、1つの数値をカットオフすると値-オーバーフローの形式が変化する可能性があります.