计算机基础二进制补码与移位运算
计算机基础二进制补码与移位运算
在计算机系统中,数字,一律采用补码表示和存储。
八位补码,与其代表数字的对应关系,如下表所示。
由图可见,数字与补码的转换,十分简单。
----------------
二进制补码移位:移动一位,就是乘(除)以二。
向左移位,很简单了。
向右移位,就要保持最高位不变。
最近学习C,感觉C确实比较接近底层,要多了解计算机基础,这一门语言就一定不能错过了,因为许多知识都从这里延伸出来。
言归正题,先说说机器数:
原码/补码/反码之间的关系:
机器数:原码与补码
对于正数而言,二进制数的原码/反码/补码都是一样的
对于负数而言,其二进制数与原码一样,其反码则是其二进制数逐位反转(0转为1,1转为0)而成,其补码则是反码的基础上加1
其中对于原码/反码和补码而言,其最高位中0代表正数,1代表负数
使用补码可使减法变加法(符号位参与运算)
更多的知识可以参考这篇文章:
http://share.onlinesjtu.com/mod/tab/view.PHP?id=173
说到位移运算,就必须有与、或、非、异或这几个运算符,它们二进制运算中的运算符,以下时他们的规则:
就像规则一样,只有全部时1的时候得到的结果才为1。
示例:
(10010011)&(00111101)=(00010001)
当运算结果其中一个为1时,结果就为1,当然,都是1的时候也是1
示例:
(10010011)&(00111101)=(10111111)
当且仅当有一个1的时候才为1,也就是说只有1和0组合才为1
示例:
(10010011)&(00111101)=(10101110)
将二进制逐位取反
示例:
~(10011010) = (01100101)
了解这四个运算符很简单,但是对于初学者而言,更重要的是其用法,如果不知道怎么用,那么这道这些运算符也没什么用
与运算符通常用于掩码,指的是一些设置为开(1)或管(0)的为组合。
在实际运用中,最常见的掩码用法莫过于以下这种:
其中0xff的二进制形式为11111111,当一个数与上0xff,那么此数的最后8位将保存不变(&运算规则决定),而其他数均会为0,也就是说最终的值被改为1个8为字节,这种用法是取位的某一段。
第二种用法是让某些位或某一位为0,因为&运算的规则,只要给某些位上&上为0的数,那么这一位就会为0,如上面的示例(10010011)&(00111101)=(00010001)
使一个位或几个位为1,如x|0x01,这样不管x是什么数,其结果的最后一位都会为1。
把两个数拼起来,如0xFF00 | 0x00FF
想得到全部位为1的数,如~0
移位运算分<<左移和>> 右移。
计算机基础二进制补码与移位运算
二进制补码移位:移动一位,就是乘(除)以二。向左移位,很简单了。向右移位,就要保持最高位不变。
二进制数字补码
结论是:二进制补码是计算机中用于表示负数的重要方式,尤其在进行减法运算时,通过补码转换可以将其转化为加法,从而简化计算。以下是关于二进制补码的详细解释:补码,尤其是8位二进制补码,对于表示范围至关重要。原码和反码无法表示-128,而补码则能够覆盖-128到+127的范围,例如-128的8位二进制补码是...
计算机的原码,反码,补码是怎么回事?可以举例说明吗?
原码、反码和补码是计算机中对数字二进制的三种表示方法。1、原码 原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。例如:用8位二进制表示一个...
计算机基础问题,关于进制补码
先看32以2进制在计算机中的存放,是0010 0000,它的补码是1101 1111,再加1,就是1110 0000.所以,-32的二进制就是1110 0000.负数的存放是:绝对值的二进制补码再加1.
二进制正,负数的原码,反码,补码三者之间是什么关系
2、当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用1来表示“开”,0来表示“关”。二、在计算机中,数的正负号是用0,1表示。三、真值为正时。其原码,反码,补码完全相同。四、 真值为负时,其原码就是把负号...
二进制补码怎么计算的
则补码为:1.0101_1100_0010_1001b 当然在硬件语言如verilog中二进制表示时不可能带有小数点(事实上不知道哪里可以带小数点)。4、一般带小数的补码 一般来说这种情况下先转为整数运算比较方便 -97.64为例,经查询其原码为1110_0001.1010_0011_1101_0111b 笔算过程:-97.64 * 2^16 = -6398935...
计算机里二进制补码为什么加1
计算机使用 2 进制,补数,就改称为:补码。在计算机中,CPU 的每次计算,其位数,也是固定的。八位机,就是八位,16 位机就是 16 位。一个字节,是 8 位 2 进制,所以有 2^8 = 256 组代码。其范围是:0000 0000~1111 1111 (十进制 255)。此时,-1 的补码,就是 255 (1111 1111)。
原码、反码、补码、移码总结
1、原码: 一个数的原始二进制形式,最高位通常作为符号位。对于数值0,有两种表现形式:正0(0000000)和负0(10000000)。原码是数字的基本形态,正数和负数的区别仅在于最左侧的位。2、反码: 正数的反码直接沿用其原码,而负数的反码则是在原码基础上,除符号位外,其他位进行按位取反操作。对于0...
怎样用计算器计算原码,反码和补码
计算机原码反码补码计算方法:1、原码 原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如如果是8位二进制:[+1]原 = 0000 0001 [-1]原 = 1000 0001 第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:[1111 1111 , 0111 1111]即[-127 , 127...
想了一个上午都不懂,-1在内存中的存放的二进制码为1111111111111111,这...
-1内存中是以补码的形式存放的,即二进制表示的 取反,再加1;如-1:最左边是符号位,1表示负数。1的二进制为000000000000001,取反为111111111111110,再加1即为111111111111111;所以整体就是上面的1111111111111111。整型在内存中以补码形式保存,对于16位机来说,-1的原码是1 0000000 00000001,其补码...
木皇百夜: 在计算机中正数的原码、反码、补码都是一样的,负数在计算机中以补码形式存储. 原码就是十进制数转换为二进制的真值数码,反码是原码各二进制位按位取反,补码是反码加1. 根据补码之和公式[X+Y]补=[X]补+[Y]补, 十进制10-16的二进制补码运算,就是求(10-16)补=(10)补+(-16)补 具体运算过程见下图所示
珲春市19562459563: 计算机组成原理问题,负数的补码的移位运算时为什么左移补0而右移补1呢, - ?
木皇百夜:[答案] 二进制数字, 左移一位,代表乘以2; 右移一位,代表除以2. 对于补码,也是一样. 负数,右移一位,也代表除以2,左边补上一,不影响正负数. 负数,左移一位,也代表乘以2.在右边补上零,代表乘以2之后就是偶数.
珲春市19562459563: 二进制补码怎么计算的 - ?
木皇百夜: 补码(two's complement) 1、在计算机系统中,数值一律用补码来表示(存储). 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理.另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃. 2、补码与原码的转换过程几乎是相同的. 求给定数值的补码表示分以下两种情况: (1)正数的补码:与原码相同. 【例1】+9的补码是00001001. (2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1. 你在百度百科里搜索补码,人家写的很清楚,我也是引用的~~~具体去搜吧,不能影响了版权呵呵
珲春市19562459563: 二进制补码怎么算? - ?
木皇百夜: 1、在计算机系统中,数值一律用补码来表示(存储). 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理.另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃. 2、补码与原...
珲春市19562459563: 二进制数反码和补码的算法 - ?
木皇百夜: 计算机里的二进制数有八位、十六位等,下面以八位为例 19的二进制数为:0001 0011 那么+19 原码为 0001 0011 反码为 0001 0011 补码为 0001 0011那么-19 原码为 1001 0011 (左边第一位表示正负数,正数为0,负数为1) 反码为 1110 1100 补码为 1110 1101
珲春市19562459563: 计算机:原码与补码分别怎样进行二进制运算的呢?1111 1111 + 0000 0001 两数均为原码,计算结果是多少1111 1111 + 0000 0001 两数均为补码,计算结... - ?
木皇百夜:[答案] 原码,不是做计算用的. 1111 1111 + 0000 0001 两数均为补码, 计算结果是 0000 0000,代表(-1)+(+1)=0.
珲春市19562459563: 计算机组成原理:原码,补码,反码,移码之间的关系? - ?
木皇百夜: 所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小. 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外. 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1.
珲春市19562459563: 计算机补码运算! - ?
木皇百夜: 99的补码就是他的二进制数1100011,正数只有原码 没有反码和补码.补码就是他本事二进制数. -58的补码是11000110 58的二进制数00111010 -58的二进制数10111010(首位为0表示正数,为1表示负数) -58的反码11000101(首位为1 任然不变表示负数,其余几位和-58的二进制码取反 0变1 1变0) 最后补码就是在反码的基础上在末尾加个1 就行了 所以结果是11000110
珲春市19562459563: 二进制补码运算 - ?
木皇百夜: 计算机字长是8位,其数值范围是-128~+127.140,不在此范围内.用 16 位的补码即可.
珲春市19562459563: 8位二进制补码计算步骤是什么? - ?
木皇百夜: 1、补码是把减法用加法计算,采用进位丢的方法得到结果时应该补足的数.2、8位二进制补码的计算步骤是:a)先按位取反,也就是把1变成0,把0变成1,得到反码.b)把得到反码末位再加1即得到补码.c)例如:10110011,先按位取反得到01001100,再把01001100加上1,得到01001101,这就是补码.