私は符号付き-符号なしの整数変換を研究していて、これらの結論に達しました。これが正しいかどうか教えてください。
unsigned short var = -65537u;
手順:
- 65537u (暗黙的に unsigned int に変換)
バイナリ表現: 0000 0000 0000 0001 0000 0000 0000 0001
- -65537u
バイナリ表現: 1111 1111 1111 1110 1111 1111 1111 1111
- 短く切り捨て
バイナリ表現: 1111 1111 1111 1111
- unsigned short として読む: 65535
以下の場合も同様とする。
unsigned short var = -65541u;
- 65541u (符号なし整数)
0000 0000 0000 0001 0000 0000 0000 0101
- -65541u
1111 1111 1111 1110 1111 1111 1111 1011
- 短く切り捨て
1111 1111 1111 1011
- unsigned short として読む: 65531
unsigned short var = -5u;
- 5u (符号なし整数)
0000 0000 0000 0000 0000 0000 0000 0101
- -5u
1111 1111 1111 1111 1111 1111 1111 1011
- 短く切り捨て
1111 1111 1111 1011
- unsigned short として読む: 65531