C语言的转化问题把-2转化成无符
负数在内存中的二进制是绝对值的二进制取反加1。
2 :0000 0000 0000 0010
取反:1111 1111 1111 1101
加1 :1111 1111 1111 1110
则,-2在内存中的存放形式是1111 1111 1111 1110。
而且,有符号基本整型数的16位中,最左边第一位是符号位,0为正,1为负。这个结果也符合这个规律。
对于无符号数,左边第一位就是数据的第一位。
1111 1111 1111 1110的十进制计算式是2的15次方加2的14次方……一直加到2的1次方。 也相当于无符号整型的最大值减1,那就是2的16次方减1再减1,就是65535-1...全部
负数在内存中的二进制是绝对值的二进制取反加1。
2 :0000 0000 0000 0010
取反:1111 1111 1111 1101
加1 :1111 1111 1111 1110
则,-2在内存中的存放形式是1111 1111 1111 1110。
而且,有符号基本整型数的16位中,最左边第一位是符号位,0为正,1为负。这个结果也符合这个规律。
对于无符号数,左边第一位就是数据的第一位。
1111 1111 1111 1110的十进制计算式是2的15次方加2的14次方……一直加到2的1次方。
也相当于无符号整型的最大值减1,那就是2的16次方减1再减1,就是65535-1,即65534。收起