有符号数F6= -10应该显示在有符号里面吗?怎么无符号也跑出来个4294 9672 86的值?
有符号数8不应该只显示在有符号里面吗?怎么无符号也跑出来个8的值?
无符号的20(十进制)不应该只显示在无符号里面吗?怎么有符号也跑出来个20(十进制)的值?
请问这是什么原因?
如果无符号数范围是0-15,那么有符号数的相当于把达到8的都减去16来表示负数
无符号:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
有符号:0 1 2 3 4 5 6 7 -8 -7 -6 -5 -4 -3 -2 -1
如果无符号数范围是0-(2x-1),那么有符号数的相当于把达到x的都减去2x来表示负数
有符号和无符号是一样的表示方法,c++中可以混淆使用
我还想问的是,怎么在反汇编中怎么区分有符号数和无符号数?
计算机是用补码表示负数,计算机存储数据要有确定的数据长度.计算机本身不识别正负。正负是给人看的,当你用%d打印就有正负,用%ud打印就没正负。我们一般由数据最高位确定正负,1是负,0是正,负数由补码表示。
你看到的-10是f6ffffff,低位在前所以是fffffff6.最高位为1所以是负数,按补码运算规则[取反加1]就是0000000a
学习一下计算机存储有符号,无符号整数的规则,就明白了。
正数存原码,负数内存是补码