我正在阅读K&R,遇到了第197页(A6部分)以下内容理解上的问题:
整数转换:将任何整数转换为给定的无符号类型,方法是找到与该整数同余的最小非负值,模除可以在无符号类型中表示的最大值加一。
能否有人稍微详细地解释一下这个过程。谢谢。
我正在阅读K&R,遇到了第197页(A6部分)以下内容理解上的问题:
整数转换:将任何整数转换为给定的无符号类型,方法是找到与该整数同余的最小非负值,模除可以在无符号类型中表示的最大值加一。
能否有人稍微详细地解释一下这个过程。谢谢。
这意味着只有低位的比特将被计算,高位的比特将被丢弃。
例如:
01111111 11111111 11110000 00001111
当转换为16位的无符号短整型
时,结果为:
11110000 00001111
这个可以用数学方式表示为:
target_value = value % (target_type_max+1) ( % = modulus operator )
2^(n) - 1.
2^n.
unsigned_val = signed_val % 2^n