PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 补数
楼主:
mater2004
(mater)
2015-06-24 23:30:52
short n=12
n的二进制值为 0000000000001100
~n运算后变为 1111111111110011
问题
为何1111111111110011在十进制是 -13
short范围-32768到32767
我觉得应该是很靠32767的一个值
作者:
kdjf
(我抓得到什么呢?)
2015-06-24 23:37:00
32767=b0111111111111111喔
作者:
softseaweed
(Gladys von Wackenheim)
2015-06-24 23:37:00
补数可把第一个bit当做sign bit, 1代表负 0代表正况且那串不会很靠近32767,2^15就32768,后面还一串
楼主:
mater2004
(mater)
2015-06-24 23:45:00
32767为何是0111111111111111阿? 有什么规则定的吗?我刚算了一下 这样就是-13 头怎不是从000000000000000开始呢
作者:
softseaweed
(Gladys von Wackenheim)
2015-06-24 23:47:00
你知道二进制怎么做的吗? 位值记数法?
楼主:
mater2004
(mater)
2015-06-24 23:49:00
不知道 刚看不久而已
作者:
softseaweed
(Gladys von Wackenheim)
2015-06-24 23:51:00
那你先把位值记数法跟二进制搞懂后再来看补数...
楼主:
mater2004
(mater)
2015-06-24 23:56:00
我不懂你说的是什么? google找不太到,如果是计算转换我会。
作者:
softseaweed
(Gladys von Wackenheim)
2015-06-25 00:05:00
你会转换怎么会不知道为何32767=b0111111111111111简而言之 二补数不用想太多 最左边的bit若是1该数就是负的,若是0该数就是零或正的若是正数或零就跟一般二进制一样换算即可负数请先NOT过后加1就会得到相对应的二进制值换算该值后在前面加上一个减号就是你要的数字了正数转负数也是NOT过后+1
楼主:
mater2004
(mater)
2015-06-25 00:14:00
我知道我哪里弄错了,你还告诉我另一个东西。谢谢
继续阅读
[问题] 自制DLL的struct问题
petercoin
[问题] thread跟stdin stdout & termios.h
sr29
[问题] 实作MS-MPI遇到LNK2019
tauai0620
[问题] C - 含有fwrite的循环变成无限循环
Rollnmeow
[问题] Qt的listWidget显示方式(已附图)
ruby122825
[问题] UTF-8 to ANSI
qscgy4
[分享] c malloc/free 初探
descent
[问题] 输入string 改成输入浮点数
ej001
[问题] 动态连结程式库实作
peter98
[问题] 请问一下,有关于字串存取
apologize
Links
booklink
Contact Us: admin [ a t ] ucptt.com