一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的, 最高位存放符号, 正数为0, 负数为1.
在计算机系统中,数值用补码来存储。使用补码,可以将符号位和其他位统一处理,同时减法也可按加法来处理。
1.原码和补码
正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
1)原码转补码分两种情况
(1)正数的补码:与原码相同
例如:+9的原码是0000 1001。补码也是0000 1001。
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反,然后加1。
例如:-9原码为1000 1001(高位为符号位,1表示负数,0表示正数),补码为11110111.
2)补码转原码也分两种情况
(1)正数的原码:与补码相同
例如:+9的补码是0000 1001。原码也是0000 1001。
(2)负数的原码:符号位为1,其余位为该该补码按位取反,然后整个数加1。
例如:-9的补码是1111 0111,原码是1000 1001。
2.左移位运算符
使用左移位(<<)运算符可以将数向左移位。其作用是所有的位都向左移动指定的次数,高次位就会丢失,低位以0来填充。
(1)正数左移位(以9为例)
9的二进制原码表示:0000 0000 0000 0000 0000 0000 0000 1001
9的二进制补码表示:0000 0000 0000 0000 0000 0000 0000 1001
9左移(<<)4位:0000 0000 0000 0000 0000 0000 1001 0000
移位后的结果十进制表示: 144
2)负数左移位(以-9为例)
-9的二进制原码表示0000 0000 0000 0000 0000 0000 0000 1001
-9的二进制补码表示:1111 1111 1111 1111 1111 1111 1111 0111
-9左移(<<)4位:1111 1111 1111 1111 1111 1111 0111 0000
移位后结果的原码表示:1000 0000 0000 0000 0000 0000 1001 0000
移位后的结果十进制表示: -144
3. 右移位运算符
使用左移位(>>)运算符可以将数向右移位。其作用是所有的位都向右移动指定的次数,低位就会丢失,高位以符号位来填充。