就是二进制定点表示法即最高位为符号位:“0”表示正,“1”表示负其余位表示数值的大小。
该数字不进行其他操作时数字最原始的二进制表示 对于原码来说,绝對值相等的正数和负数只有符号位不同
正数的反码与其原码相同;
负数的反码是对其原码逐位取反,但符号位除外(只需要将原码除苻号位以外的位数取反,即0改为11改为0)
正数的补码与其原码相同;
负数的补码是在其反码的末位加1。
有人会有疑惑为什么要用反码补碼,不直接用原码呢
先搞清楚一点反码、补码、原码是针对二进制数而言,计算机若用原码相加减正数加正数不会出错,然而正数和負数原码相加就会出错说白了,补码、反码就是为了简化减法而来的,将减号化为负数后再将负数化为补码求加法,就跟正数没关系了!
不管是正整数还是正小数,原码,反码,补码都全部相同计算机中所有数都是以补码形式存储的。
各位看官能看明白不?
JAVA中用补码表示二进制數
正数原码由于最高位只能是0,因此最大值最小值代码为:0 111 1111即127。
负数原码由于最高位只能是1,因此最小值为:1 111 1111即-127,我擦那哪来嘚-128呢?
这里有个问题即0是属于正数呢,还是属于负数呢:+0表示为:,-0表示为:1000000
因为最高位是符号位不算在里面,所以就会有两个0所以从一开始发明二进制的时候,就把-0规定为-128如此二进制的补码就刚好在计算机中运作中吻合。(这里就是把最高位符号位既是符号位,又是最高位因此这里的1既代表是负数,又代表2^7次方)
2^8=256即能有256个数字,包括最高位是0和1的情况
最高位是1和0即正数和负数平分一下,就是正负各 128 个值
相当于-127到-0,0到127这样正负数各128个,
由于-0算成最小负数负数没有少,所以负数是128个
由于正数的0没有了正数少一个,所以正数是127个