今天因为操作数据库,将数据库的int类型强制转换为tinyint类型,才终于明白其中的转换原理。
平时使用c语言也经常 使用强制转换,但是一直都感到有点模糊,为什么转换出来的值是这个,怎么来的却不清楚,只知道与补码有关。
于是有空查看了下 原码与补码,反码的概念。
(1)原码表示法
原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作[x]原。
例如,X1=+1010110
X2= 一1001010
其原码记作:
[X1]原=[+1010110]原=01010110
[X2]原=[-1001010]原=11001010
原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围:
最大值为0.1111111,其真值约为(0.99)10
最小值为1.1111111,其真值约为(一0.99)10
当用8位二进制来表示整数原码时,其表示范围:
最大值为01111111,其真值为(127)10
最小值为11111111,其真值为(-127)1