进制表示-02 原码、反码、补码、移码 随笔
睁眼闭眼就是第二天
所以什么样的生活方式才是程序员的生活
说轻松不轻松,说不轻松又很轻松。动动手指头一个月就到账万把块,而有时候想破脑筋也没有解决方案;这就是程序员吗?可是只是对我而言吧,从三流大学自学JAVA一路艰辛到目前从业JAVA行业
可身边的人让我不禁投向羡慕的眼光,一份客观的工资,一份美满的爱情;他的生活与我对比,我会感到落差,工资不算高就算了,还孤身一人。
我想着突破自我,再多学些知识,再涨涨工资;自己还剩那么多的梦想没有实现,可是这一路该有多难啊。
源码、反码、补码、移码
码制 | 整数 | 负数 | 运算规则 |
---|---|---|---|
源码 \(\Downarrow\) | 0110 0010 | 1110 0010 | 最高位为符号位,为0表示正数,为1表示负数 |
反码 \(\Downarrow\) | 0110 0010 | 1001 1101 | 原码基础之上,正数保持不变。负数符号位不变其他余位按位取反 |
补码 \(\Downarrow\) | 0110 0010 | 1001 1110 | 反码基础之上,正数保持不变。负数符号位不变,余数+1 |
移码 | 1110 0010 | 0001 1110 | 补码基础之上,符号位取反 |
实例真题
一、 设机器字长为8,对于二进制编码10101100,如果他是某整数X的补码表示,则X的真值(十进制)为(/),若它是某无符号整数Y的机器码,则Y的真值(十进制)为(/)
A、84 | 😊 B、-84 | C、172 | D、-172 |
---|---|---|---|
A、52 | B、84 | 😊C、172 | D、204 |
1.答:
\(\Downarrow\)得知10101100是补码,我们可以反转以下变成反码(反码变补码+1,所以现在补码变反码就-1)
\(\Downarrow\)得到的反码为:10101011
\(\Downarrow\)既然得到了反码,那就该转原码了,规则是:正数不变,负数符号位不变->其他余位按位取反;这里看的出符号位是1(负),得知11010100
\(\Downarrow\)得知原码为:11010100 \(\Longrightarrow\)二进制转十进制\(\Longrightarrow\)得:\(1\times2^2 + 1\times2^4 + 1\times2^6 \Longrightarrow 4+16+64\)=84;84加上符号位就是-84
2.答:
得知无符号整数Y的机器码(直接当作二进制);\(\Longrightarrow\)二进制转十进制\(\Longrightarrow\)得:\(1\times2^2 + 1\times2^3 + 1\times2^5 + 1\times2……7 \Longrightarrow 4+8+32+128\)=172
二、计算机中常用原码、反码、补码、移码表示数据,其中表示0时仅用一个编码的是(/)
三、在定点二进制运算中,减法运算一般通过(/)来实现
四、设机器字长为8个二进制位,对于十进制-128,其补码表示为(/)