【发布时间】:2013-10-02 16:01:59
【问题描述】:
有人可以向我解释这两个吗,因为我必须在我的作业中对它们都进行解释。
我当然知道什么是普通整数,并用以下来描述它:
“整数是一个整数,可以是正数、负数和零,但不能有小数点。”
但我只是不确定签名和未签名。
谢谢
【问题讨论】:
-
"Signed" 包括符号(负号或正号)。 “无符号”不能——只能是非负数。您可能会在 Wikipedia 或其他网站上找到大量信息。
有人可以向我解释这两个吗,因为我必须在我的作业中对它们都进行解释。
我当然知道什么是普通整数,并用以下来描述它:
“整数是一个整数,可以是正数、负数和零,但不能有小数点。”
但我只是不确定签名和未签名。
谢谢
【问题讨论】:
有符号整数和无符号整数的区别在于,整数需要一个字节来保存符号。
例如,使用两个二进制数字,您可以有以下内容:
Base 2 Base 10
00 0
01 1
10 2
11 3
但是,如果我们取第一个数字表示负数 (0) 或正数 (1)
Base 2 Base 10
01 -1
00 0
10 1
11 2
或者,如果我们希望 1 为负数,而 0 为正数:
Base 2 Base 10
01 1
00 0
10 -1
11 -2
如需进一步阅读,请查看Two's compliment 上的维基百科文章
【讨论】:
在大多数语言中,当您声明一个整数时,您就是在声明一个有符号整数。如果你想声明一个无符号整数,你必须特别告诉编译器。例如在c#中
int a; // Signed int
uint b; // Unsigned int.
不同之处在于,在有符号整数中,其中一位用于指示数字是正数还是负数。在无符号整数中,该位用于保存一个值。效果是您可以在 unsigned in 中保存两倍的绝对值,就像在有符号 int 中一样。或者更清楚地说,C# 整数的范围是 -2,147,483,648 到 2,147,483,647,而 uint 的范围是 0 到 4,294,967,295。两种数据类型都是 32 位数据类型。
【讨论】:
一般说int的时候,就是signed int。 (有符号) int 的范围为 -32768 - 32767 但是 unsigned int 的范围是 0 - 65535
int 的无符号变量类型可以保存零和正数,但有符号的 int 可以保存负数、零或正数。
【讨论】: