如何使用Ruby的按位运算符计算一个补码?
发布时间:2020-12-17 01:48:20 所属栏目:百科 来源:网络整理
导读:我想要的是: assert_equal 6,ones_complement(9) # 1001 = 0110assert_equal 0,ones_complement(15) # 1111 = 0000assert_equal 2,ones_complement(1) # 01 = 10 输入的大小不固定为4位或8位.而是它的二进制流. 我所看到的: v = "1001".to_i(2) = 9 有一点
我想要的是:
assert_equal 6,ones_complement(9) # 1001 => 0110 assert_equal 0,ones_complement(15) # 1111 => 0000 assert_equal 2,ones_complement(1) # 01 => 10 输入的大小不固定为4位或8位.而是它的二进制流. 我所看到的: v = "1001".to_i(2) => 9 有一点翻转运算符? (~v).to_s(2) => "-1010" sprintf("%b",~v) => "..10110" ~v => -10 我认为它与一个用于存储标志的东西有关…有人可以解释这个输出吗?如何在不使用字符串操作的情况下获得一个补码,例如从sprintf输出中删除最后的n个字符以获得“0110”或将0替换为1,反之亦然 解决方法
听起来你只想翻转四位(输入的长度) – 所以你可能想要与1111进行异或.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |