Jon*_*nas -4 c++ range unsigned-char
使用unsigned char,您可以存储0到255之间的数字
255(b10)= 11111111(b2)<=那是1个字节
这样可以轻松地执行+, - ,*等操作...
现在怎么样:
255(b10)= 10101101(b2)
使用此方法可以使用unsigned char 表示最多399个?
399(b10)= 11111111(b2)
有人可以提出一种算法来使用最后一种方法进行加法吗?
对于8位,只有256个可能的值(2 8),无论你如何切片和切块.
您的方案编码2-3-3形式的数字,如:
255 = 10 101 101
399 = 11 111 111
Run Code Online (Sandbox Code Playgroud)
忽略这样的事实:那里的那些三位序列只能代表八个值(0-7),而不是十个(即第二个将是377,而不是399).
权衡是,这意味着您获得总共82个值的数字'25[6-7]'(2个值)'2[6-7][0-7]'(16个值)和'3[0-7][0-7]'(64个值).
你为此获得的牺牲就是你不能再代表任何包含8或9:'[8-9]'(2个值),'[1-7][8-9]'(14个值),'[8-9][0-9]'(20个值),'1[0-7][8-9]'(16个值),'1[8-9][0-9]'(20个值)或'2[0-4][8-9]'(10个值)的数字,总计82个值.
那里的平衡(82对82)表明,对于8位数据类型,仍然只有256个可能的值.
因此,您的编码方案基于一个有缺陷的前提,这使得您的问题的第二部分(如何添加它们)无关紧要,我担心.
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |