二进制位,只有0和1两个数字组成
在计算机中就把它作为数据的基本单位‘位’(bit),然后再把八个这样的位组成一个字节(byte),如 1000,1111.
二进制1111,1111转换为十进制,为255,于是可知1字节的表示范围是0(0000,0000)到 255
在计算机中是这样规定的,用一个数的最高一位表示正负,0为正,1为负.如0111,1111转换为十进制为127,1111,1111为-127,由此我们知一字节的范围为-127到127,其他字节的范围类推. 这是原码表示法
在计算机中的数据都是以补码存放的,只有这样才能减轻cpu的负担.提到补码,就不得不提反码了.计算机中是这样规定反码的,如果是正数,则按原码形式不变,如127仍为0111,1111;而如果为负数则,第一位为1,其他各位取反(即0变为1,1变为0),如原码-127(1111,1111),表示为1000,0000.
正数的原码反码补码都按按原码形式不变,如127 补码仍为:0111 1111 负数则在反码上加上1得补码 如-127的补码为:1000 0001
1000,0000比较特殊,用它来表示-128,知补码可表示的范围是-128--127。
正数的原码、反码、补码 都等于 原码
负的原码即为它绝对值的原码, 反码即 同位取反, 补码即反码+1
按位与,说起来简单 :两数的 二进制,同位为1,即为1,否则为0
1.两个正数:5 和9
5的补码:0000 0101
9 :0000 1001
按位与 :0000 0001 该值为1 (正数的补码,原码还是它,得到值为1)
2.一正一负:5 -9
-9的原码:1000 1001
-9的反码:1111 0110
-9的反码加上1得补码:1111 0111
5的补码:0000 0101
按位与 :0000 0101 该值为5 (正数的补码,原码还是它,得到值为5)
3. 两负数: -5 -9
-5的原码: 1000 0101
取反码时:第1位为1 不变, 其他各位取反 1111 1010
加1得到补码为: 1111 1011
-9的原码: 1000 1001
取反码为: 1111 0110
加1得到补码为: 1111 0111
1111 1011 -5的补码
1111 0111 -9的补码
按位与 :1111 0011 该数为负数 的补码,
该负数原码 = 补码-1 再取反码
减1后:1111 0010
取反: 1000 1101
总的说:以补码进行位运算 ,最后得到的是补码值,如高位为0,表示正数,那它的原码也不变,直接转换成10进制,即是我们想求的值;如高位为1,表示负数,那还要用该补码值减1后取反码 得到 负数的原码值 ,再转成十进制.......