计算机中为什么最大的数值为127?
计算机中为什么最大的数值为127?
计算机中为什么最大的数值为127?学习啦小编认为可以从计算机中数值的表示中可以得出结论。
计算机很笨,只认识0和1,也就是所谓的二进制。现实中的东西要放进电脑,一定要转化为0和1组成的数字串,不同的0和1的组合代表了不同的东西,这其实就是编码。这是最基本的。还有很多编码不是将某种东西直接变成0和1,而是编码成别的数字串,这些数字串也能代表不同的东西,然后再将这些数字串变成0和1的数字串,再放进计算机中。
数值在二进制中的3种表示分别为:原码、反码和补码。
原码:将一个整数,转换成二进制,就是其原码。如单字节的5的原码为:0000 0101;-5的原码为1000 0101。
反码:正数的反码就是其原码;负数的反码是将原码中,除符号位以外,每一位取反。如单字节的5的反码为:0000 0101;-5的反码为1111 1010。
补码:正数的补码就是其原码;负数的反码+1就是补码。如单字节的5的补码为:0000 0101;-5的原码为1000 0101。
为什么在计算机中,负数用补码表示呢?为什么不直接用原码表示?如单字节-5:1000 0101。求补码原则:(1)正数补码还是他本身 (2)负数补码,符号位变成1,其他位取负数的绝对值后按位取反再加1 (3)补码中高位进位都直接丢掉。
C语言中整型常量有三种不同的表示形式:
1、八进制整型常量:在八进制数值前面加前缀“0”,其数码取值为0~7。例如:054、0567、05421。
2、十六进制整型常量:前缀为“0X”或“0x“,其数码取值为0~9、A~F 或 a~f。例如:0X3D、0XE0、0xfff等。
3、十进制整型常量:既无前缀也无后缀。例如:254、745、890等。 如将存储为long类型,需要在数字序列最后附一个字母L 或 l 作为后缀。例如:245L、7850L、124l等。
一般来说,整数常量是被当作 int 类型(32位)来存储的。如果我们使用的整数常量超出了 int 的表示范围,C 语言规定编译器自动使用 unsigned int 来处理这个常量。如果 unsigned 也不足以表示这个常量的话,编译器就会用 long long。如果还表示不了的话,那就用 unsigned long long。如果 unsigned long long 也表示不了,那么编译器就没辙了。例如:如果 int 是 16 位的话,它就表示不了常量 1000000。编译器会使用 long long来处理这个常量,因为 unsigned int 也表示不了 1000000 。
同样,十六进制和八进制整数常量通常也是被作为 int 来处理。但是,当我们使用的常量超出了 int 的表示范围后,编译器会依次使用unsigned int,long long 和 unsigned long long。直到所使用的类型足以表示那个常量为止。
补码小技巧
注意一个数的补码和其相反数的补码之间的关系是,这个数的补码各位取反后加1得到其相反数的补码。例如-128的相反数和0的相反数在计算机里面还是本身,-128补码是1000 0000,各位取反加一后还是1000 0000故相反数不变;0的补码 0000 0000,各位取反加一后仍为0000 0000(高位自动溢出)。其他的数的相反数概念在数学和计算机中是一样的。比如-1的补码1111 1111,其相反数的补码是0000 0001。