二进制补码设置,使其更容易对电脑计算两个数的减法。 但如何区分电脑的整数符号整数或无符号整数? 这只是0,并在其内存1。
对于〔实施例, 1111 1111
在计算机存储器可以表示编号255,但也可以代表-1。
二进制补码设置,使其更容易对电脑计算两个数的减法。 但如何区分电脑的整数符号整数或无符号整数? 这只是0,并在其内存1。
对于〔实施例, 1111 1111
在计算机存储器可以表示编号255,但也可以代表-1。
符号和无符号使用相同的数据,但不同的指令。
在电脑卖场符号和无符号整数为相同的数据。 即255和-1是相同的比特。 但是,你告诉变量是什么类型的编译器。 如果签约,编译器使用运营商签订的操纵变量(例如IDIV)和无符号时,它使用另一个指令(例如DIV)。 因此编译器的程序,它告诉CPU如何解释数据。
它不区分它们。 但与补充,计算是一样的:
下面, d
将被追加成十进制数,和b
为二进制数。 计算将在8个整数。
-1d + 1d = 1111 1111b + 1b = 1 0000 0000b
但由于我们溢出(是的,这是8个0
S和1
对8个整数),结果为0。
-2d + 1d = 1111 1110b + 1b = 1111 1111b = -1d
-1d + 2d = 1111 1111b + 10b = 1 0000 0001b (this overflows) = 1b = 1d
-1d + -1d = 1111 1111b + 1111 1111b = 1 1111 1110b (this overflows) = 1111 1110b = -2d
如果你考虑在无符号这些操作(二进制值将保持不变):
255d + 1d = 1111 1111b + 1b = 1 0000 0000b (this overflows) = 0d
254d + 1d = 1111 1110b + 1b = 1111 1111b = 255d
255d + 2d = 1111 1111b + 10b = 1 0000 0001b (this overflows) = 1b = 1d
255d + 255d = 1111 1111b + 1111 1111b = 1 1111 1110b (this overflows) = 1111 1110b = 2d
无符号与签署因此是无符号只是一个视觉表示,仅显示用于人:-)时使用