在二进制码中,采用最高位是符号位的方法来区分正负数,正数的符号位为0、负数的符号位为1。剩下的就是这个数的绝对值部分。通过将负数转为二进制原码,再求其原百码的反码,最后求得的补码即负数的二进制表示结果。
比如整数-1。先取1的原码:00000000 00000000 00000000 00000001,得反码: 11111111 11111111 11111111 11111110,最后得补码: 11111111 11111111 11111111 11111111,即-1在计算机里用二进制表示结果
扩展资料:
二进制代码语言程序员既要驾驭程序设计的全局又要深入每一个局部直到实现的细节,即使智力超群的程序员也常常会顾此失彼,屡出差错,因而所编出的程序可靠性差,且开发周期长。
由于用二进制代码语言进行程序设计的思维和表达方式与人们的习惯大相径庭,只有经过较长时间职业训练的程序员才能胜任,使得程序设计曲高和寡。
老大你是不是问错了,应该说十进制的负数都用的是二进制的补码吧!其实,这个问题就是在说变号操作(取负)将十进制数转化为二进制数,再将源码转换为反码,在反码的个位上加1就是补码,而这个补码就是十进制数的负数了。
“ 0000 0101”在十进制中表示“5”,将这个二进制数(源码)转换为反码就是
“1111 1010”而它的补码就是在反码的个位上加1为“1111 1011” 这个补码的十进制数为“-5”。如果不明白可以在线交流!!!!!!!
1.负数的加法:负数的加法计算方法与正数的加法方法一样,只是在结果前加上负号就可以了。如:(-2)+(-3)=-(2+3)=-5
2.负数的减法:简单的说就是,减去一个负数就是相当于加上那个数的正数。如:-2-(-3)=-2+3=3-2=1。或者:-3-(-2)=-3+2=2-3=-1
3.负数的乘法:运算法则和正数的乘法一样,只是要考虑符号问题。
若两个数符号相同则结果为正数,若两个数符号相反则结果为负数。
如:(-2)*(-3),两个数都是负数,符号相同,所以结果为正数,也就是6
若:(-2)*3 或 2*(-3),两个数符号不同,所以结果为负数,也就是-6.
4.负数的除法:方法与负数的乘法一样,先按照两个数都是正数做除法,然后在判断符号。 若两个数符号相同则结果为正数,若两个数符号相反则结果为负数。
如:(-6)/(-2),两个数都是负数,符号相同,所以结果为正数,也就是3
若:(-6)/2 或 6/(-2),两个数符号不同,所以结果为负数,也就是-3. (-1)+(-2)= - (1+2)
(-1)-(-2)= -1 + 2=1 就是后面的两个负号抵消了 减负等于加正
(-1)×(-2)=2 除法与乘法相同 重点是看一个式子里有几个负号
偶数个的就直接抵消 奇数个的就不变
一个二进制,首位数是1的,就是负数。那么到底负几呢?
如1110 1001,减一取反等于0001 0111。
0001 0111等于23,那么所求数就是-23了
总结:【减一取反】
理论:
负数在计算机里是以补码的形式存在的,因此还需要换算成原码
正数的补码与原码完全相同,负数的补码是其反码加1(即负数的原码是【补码-1取反】)
补码-1=反码 1110 1001-1=1110 1000
反码取反=原码 1110 1000取反=1001 0111(最高位是符号位,取反的时候保持不变)
那么1001 0111=-(16+4+2+1)=-23
========================
位运算符~ 是按位取反
如~-5=4过程:
源码-5【取反+1=】补码【~取反=】4
互为正负数的两个十进制整数的二进制转换原则双向转换均是先按位取反再加1,以-5为例:
(1)1111 1011,按位取反后得到0000 0100
(2)再加1之后得到,0000 0101
(3)该数字对应的十进制数为5
所以得到原数为-5