在Pascal中使用swap函数时为什么65535、65534等(存的是longint型)的swap值为负数(-65536、-131072)?

我指的是swap命令(交换一个变量的高位和低位字节)哈
补充资料:
swap是用来进行位操作的。就是交换一个数的二进制高位和低位。
例如,一个longint变量占4个字节,也就是32个二进制位。
var a:longint;
begin
a:=12345;
writeln(swap(12345));
end.
那么将输出80904920,因为12345的2进制是00000000000000000011000000111001,交换前后两个16位后是00110000001110010000000000000000,即809041920
相同的,如果var a:integer;那么a占了2个字节,也就是16个二进制位。交换12345(也就是0011000000111001)的前后两个8位的结果就是14640(0011100100110000)。
来源:http://zhidao.baidu.com/question/15317174.html

swap 应该有两个数交换吧?追问

我指的是swap命令(交换一个变量的高位和低位字节)啦

追答

longint型 32位整数啊, -2147483648-----2147483648
65535 只是16位的,高位补0, 交换后65535 到高位符号位为1,变成负数。

65535=0000FFFF
交换后 FFFF0000, 最高位=1, 变成负数。

追问

请问二进制中最高位储存的是正负符号(1:负 2:正)吗?

追答

请问二进制中最高位储存的是正负符号(1:负 2:正)吗?
二进制数没有2, 只有 0 和 1.
1:负 0:正

温馨提示:答案为网友推荐,仅供参考