进制表示-02 原码、反码、补码、移码 随笔

发布时间 2023-03-22 21:09:35作者: 无酒无花锄作田

睁眼闭眼就是第二天

      所以什么样的生活方式才是程序员的生活
      说轻松不轻松,说不轻松又很轻松。动动手指头一个月就到账万把块,而有时候想破脑筋也没有解决方案;这就是程序员吗?可是只是对我而言吧,从三流大学自学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,其补码表示为(/)