关于 无符号数 跟 有符号负数 在内存中的区别
关于 无符号数 和 有符号负数 在内存中的区别?
比如 无符号的255 和有符号的 -1
在内存都是 1111 1111 表示吧
那计算机在读取这段内存的时候是根据什么来决定
要读成255 还是 -1 的呢
悲催的问题,狠简单的问题
可是真不懂啊
------解决方案--------------------
比如 无符号的255 和有符号的 -1
在内存都是 1111 1111 表示吧
对
那计算机在读取这段内存的时候是根据什么来决定
要读成255 还是 -1 的呢
读成:1111 1111
悲催的问题,狠简单的问题
可是真不懂啊
内存就是内存, -1 和255 存在1字节里都是1111 1111, 问题是怎么解释它, 也就是char还是unsigned char的问题。
------解决方案--------------------
根据指令来决定的
处理有符号和无符号数的指令是不一样的
------解决方案--------------------
举个最简单的例子
比如 无符号的255 和有符号的 -1
在内存都是 1111 1111 表示吧
那计算机在读取这段内存的时候是根据什么来决定
要读成255 还是 -1 的呢
悲催的问题,狠简单的问题
可是真不懂啊
------解决方案--------------------
比如 无符号的255 和有符号的 -1
在内存都是 1111 1111 表示吧
对
那计算机在读取这段内存的时候是根据什么来决定
要读成255 还是 -1 的呢
读成:1111 1111
悲催的问题,狠简单的问题
可是真不懂啊
内存就是内存, -1 和255 存在1字节里都是1111 1111, 问题是怎么解释它, 也就是char还是unsigned char的问题。
------解决方案--------------------
根据指令来决定的
处理有符号和无符号数的指令是不一样的
------解决方案--------------------
举个最简单的例子
- C/C++ code
signed char a = -1; unsigned char b = (unsigned char)-1; int va = (int)a; int vb = (int)b; printf("va = %d, vb = %d\n",va,vb);
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
根据程序指令来决定读取内存中的数据方式。
------解决方案--------------------
在内存中没有什么区别,关键是你站在无符号数的角度,还是有符号数的角度去看问题。
同一个东西,你站在不同的角度,看到的东西就是不一样的。