二进制反码运算
2016-10-13 22:13
239 查看
最近在看计算机网络的相关知识,看到了运输层相关的知识,看到UDP检验和然而却看不懂什么意思!所以只好百度一下二进制
反码运算究竟是如何运算。
首先在计算机中所有的数据都是以二进制的形式存储的,正数和负数的区别仅仅是符号位的区别,正数的符号位是0,而负数的符
号位是1,然后正数的反码和补码都和原来一样,而负数的反码是符号位不变,其他按位取反,补码是在反码的基础上加1.
例如:18的二进制数是010010,最前的一位是符号位,反码010010,补码010010
-18的二进制数是110010,反码是101101,补码是101110
下面是反码运算:
0和0相加是0,0和1相加是1,1和1相加是0但要产生一个进位1,加到下一列。如果最高位相加后产生进位,则最后得到的结果要加1。
PS:
1.反码运算时,其符号位与数值一起参加运算。
2.反码的符号位相加后,如果有进位出现,则要把它送回到最低位去相加(循环进位)。
3.用反码运算,其运算结果亦为反码。在转换为真值时,若符号位为0,数位不变;若符号位为1,应将结果求反才是其真值。(这里求反不包括符号位)
[例1] 已知X = 01101 , Y = 0 0110 , 用反码计算Z = X-Y。
解: [X]反 = 01101,[-Y]反 = 11001,则[Z]反 =[X]反+[-Y]反 = 01101+11001+1(循环进位)= 00111 , 其真值为Z = 00111。
[例2] 已知X = 0 0110 , Y = 0 1101 , 用反码计算Z = X-Y。
解: [X]反 = 00110,[-Y]反 = 10010,则[Z]反 =[X]反+[-Y]反 = 00110 + 10010
接下来就是
= 11000 , 其真值为Z = 10111
反码运算究竟是如何运算。
首先在计算机中所有的数据都是以二进制的形式存储的,正数和负数的区别仅仅是符号位的区别,正数的符号位是0,而负数的符
号位是1,然后正数的反码和补码都和原来一样,而负数的反码是符号位不变,其他按位取反,补码是在反码的基础上加1.
例如:18的二进制数是010010,最前的一位是符号位,反码010010,补码010010
-18的二进制数是110010,反码是101101,补码是101110
下面是反码运算:
0和0相加是0,0和1相加是1,1和1相加是0但要产生一个进位1,加到下一列。如果最高位相加后产生进位,则最后得到的结果要加1。
PS:
1.反码运算时,其符号位与数值一起参加运算。
2.反码的符号位相加后,如果有进位出现,则要把它送回到最低位去相加(循环进位)。
3.用反码运算,其运算结果亦为反码。在转换为真值时,若符号位为0,数位不变;若符号位为1,应将结果求反才是其真值。(这里求反不包括符号位)
[例1] 已知X = 01101 , Y = 0 0110 , 用反码计算Z = X-Y。
解: [X]反 = 01101,[-Y]反 = 11001,则[Z]反 =[X]反+[-Y]反 = 01101+11001+1(循环进位)= 00111 , 其真值为Z = 00111。
[例2] 已知X = 0 0110 , Y = 0 1101 , 用反码计算Z = X-Y。
解: [X]反 = 00110,[-Y]反 = 10010,则[Z]反 =[X]反+[-Y]反 = 00110 + 10010
接下来就是
= 11000 , 其真值为Z = 10111
相关文章推荐
- JAVA:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题(5)
- 正负数二进制表示,正负数二进制移位运算、二进制源码、反码、补码
- 二进制的原码、反码、补码和程序超出整型限制时的运算
- java 二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题
- java语言基础(6)——原码反码补码以及二进制的负数运算
- java 二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题
- java 二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题
- 二进制(原码,反码,补码),位运算原则:
- 二进制转换成十六进制进行反码加法运算
- 原码、反码、补码、移码,二进制运算
- 20161208计算机科学导论02_二进制运算
- js的移位运算以及二进制补码反码的计算方法
- C语言巧妙运用位运算十进制转化为二进制输出
- Java中的二进制、八进制、十六进制和移位运算
- 位移运算、junit、数据的源码,补码和反码
- 简单理解二进制的左移和右移运算
- 《剑指offer》刷题笔记(位运算):二进制中1的个数
- 位运算实例(二):十进制转为二进制