负数的二进制表示与位运算 |
您所在的位置:网站首页 › 二重积分的计算结果可以为负数吗 › 负数的二进制表示与位运算 |
首先必须要明确的是:负数在计算机中都是以补码来表示的。 负数的位运算也是在补码上进行的。 与运算-2&-3 =-4 原码 10000010 10000011 取反 11111101 11111100 (反码) 加一 11111110 11111101 (补码) 与运算结果 11111100 这个结果是多少呢?首先看最高位是1,说明这是一个负数的补码表示,我们把它转化成十进制看看是多少。 负数的补码转化为原码: 符号位不变,其余为取反:10000011 然后再加1:10000100 10000100是-4的原码表示,所以-2&-3的结果是-4 位运算负数的位运算尤其需要注意:负数右移运算在左侧补1,而正数是补0。 -5 >> 1 = -3 原码:10000101 反码:11111010 补码:11111011 右移一位:11111101 这个结果是多少呢?首先看最高位是1,说明这是一个负数的补码表示,我们把它转化成十进制看看是多少。 负数的补码转化为原码: 符号位不变,其余为取反:10000010 然后再加1:10000011 10000011是-3的原码表示,-5 右移一位是-3,相当于除以2,向下取整。 但是需要注意的是,5右移一位是2,也是相当于除以2,向下取整。 5 >> 1 = 2 原码:10000101 右移一位:10000010 10000010转化为十进制是2 还有一点需要十分注意就是-1和1的右移运算: 1 >> 1 = 0 原码:00000001 右移一位:00000000 00000000转化为十进制是0 -1 >> 1 = -1 原码:10000001 反码:11111110 补码:11111111 这个结果是多少呢?首先看最高位是1,说明这是一个负数的补码表示,我们把它转化成十进制看看是多少。 负数的补码转化为原码: 符号位不变,其余为取反:10000000 然后再加1:10000001 10000001是-1的原码表示。 所以可以知道:1右移一位是0,-1右移一位仍然是-1。-1的右移运算永远是-1. |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |