这篇文章应该是承接
文章的,由于原问题中必需用c解答所以我就单独作为一篇文章来解释并做了完整的补充。
首先,大家需要明确Ruby是无法用按题目中的要求解决问题的,至少直接将C的代码翻译过来是不行的。
原因是:运算符 ! 的使用范围被限制了
(原始的C语言作用的数据有基本数据,但是Ruby语言作用的一切数据都是对象),对于对象的!(非)运算效果有很大不同。Ruby中所有的对象都有一个boolean值,除了false、nil两个const对象的结果为false以外,其它对象的值都为true.
wpc@wpc-laptop:~$ irb
irb(main):001:0> !0
=> false
irb(main):002:0> !1
=> false
irb(main):003:0> !-1
=> false
irb(main):004:0> !01
=> false
irb(main):005:0> !0x1
=> false
irb(main):006:0> !-0x1
=> false
irb(main):007:0> !-01
=> false
irb(main):008:0> false
=> false
irb(main):009:0> !false
=> true
irb(main):010:0> nil
=> nil
irb(main):011:0> !nil
=> true
其次,我们不能通过不带负号(-)的数据(例如:二进制、八进制、十六进制)来使数据为负值。
数据格式:
- 0
377 八进制在数字前面加一个: 0
- 0b
1111_1011 二进制在数字前面加: 0b
- 0x
FF 十六进制在数字前面加: 0x
wpc@wpc-laptop:~$ irb
irb(main):001:0> 1
=> 1
irb(main):002:0> -1
=> -1
irb(main):003:0> 0xffffffff
=> 4294967295
irb(main):004:0> 0x0
=> 0
irb(main):005:0> -0xffffffff
=> -4294967295
irb(main):006:0> 0b1111
=> 15
irb(main):007:0> -0b1111
=> -15
irb(main):008:0> -0b11111111111111111111111111111111
=> -4294967295
irb(main):009:0> 0b11111111111111111111111111111111
=> 4294967295
最后,我们可以通过位运算符操作来得到正负的转换.
题目的部分解答:
def bitAnd(x,y)
(~(~x|~y))
end
def bitOr(x,y)
(~(~x&~y))
end
def isZero(x)
!(a^0)
end
def minusOne()
# postive of i : ~i = -(i+1)
~0
end
def tmax()
~(1<<31)
end
def bitXor(x,y)
~((~(x&(~y)))&(~((~x)&y)))
end
def getByte(x,n)
a = 0x000000ff
b = n<<3
a = a<<b
(x&a)>>b
end
def isEqual(x,y)
!(x^y)
end
def negate(x)
~x+1
end
def isPositive(x)
!((x>>31)&1 | !x)
end
p tmax
p minusOne
p negate(1)
p negate(2)
p negate(-3)
p bitAnd(1,0)
p bitXor(1,0)
p bitOr(1,0)
p getByte(0x12345678,3).to_s(16)
未完待续...
分享到:
相关推荐
Ruby还有一个强大的标准库,提供了丰富的工具和功能,使开发者能够快速构建各种类型的应用程序。Ruby还有一个流行的Web框架Ruby on Rails,被广泛应用于Web开发领域。总的来说,Ruby是一种灵活、强大且易于学习的...
虽然 Ruby 一直把最小惊讶原则作为它的哲学之一,但还是常常看到让人惊讶不已,难于理解的代码,这可能是因为对它运算符和语句优先级理解不透导致,今天就和大家聊一聊 Ruby 运算符和语句的优先级。 先看一句简单的...
对 Ruby 语言进行了简单介绍。
Ruby基础知识-数据类型.pdf
变量、常量和数据类型:学习Ruby中变量的定义和命名规则,了解常量的使用,掌握基本的数据类型(如整数、浮点数、字符串等)。 运算符与控制流:掌握Ruby中的运算符(如算术运算符、比较运算符、逻辑运算符等),...
概括、ruby中的基本数据类型都是类类型,只不过为了书写和阅读的方便,为基本数据类型提供了较为简洁的书写方式而已。 一、数值类型 整数支持二进制,八进制,十进制,十六进制,根据整数的大小动态决定整数是Fixnum...
学习ruby单元测试小结,主要是对Test::Unit的理解和学习
仆人Ruby 从您的仆人 API 生成 Ruby 客户端!
《Ruby程序设计语言》是Ruby的权威指南,全面涵盖该语言的1.8版和1.9版。本书详尽但并不拘泥于语言... 数据类型和对象 表达式和操作符 语句和控制结构 Method、proc、lambda和closure 类和模块 反射和元编程
uby支持的数据类型包括基本的Number、String、Ranges、Symbols,以及true、false和nil这几个特殊值,同时还有两种重要的数据结构——Array和Hash。
rgeo - Ruby的地理空间数据的库。空间数据类型、几何和球面计算和WKT / WKB序列化
变量和数据类型:Ruby 支持多种基本数据类型,包括整数、浮点数、字符串、数组、哈希等。你需要了解如何声明和使用这些变量,以及它们之间的区别和用法。 条件语句和循环:Ruby 使用 if...else、case、while、for 等...
3. Ruby中常用的数据类型有哪些?请列举几种常见的Ruby数据类型。 4. Ruby中如何进行条件判断和控制流程?请列举几种条件判断和控制流程的语句。 5. 什么是Ruby中的字符串(String)操作?请说明在Ruby中的字符串...
R和Ruby数据分析之旅 数据分析 数据挖掘
pru, Pipeable ruby 忘记 grep/sed/awk/wc. 使用纯,可以读的ruby ! Pipeable ruby - 忘记 grep/sed/awk/wc 。 使用纯。可以读的ruby !地图- 每行# count letters of each linels -1 | pru size# sele
Ruby 是一种高级编程语言, 它被用于开发各种应用程序和网站。 自 2000 年以来, Ruby 已经成为了互联网编程中最受欢迎的工具之一。 本文将详细 介绍 Ruby 编程语言的基础知识, 包括变量、 运算符、 流程控制、 ...
如果你对万事万物的运行方式充满好奇,这本有趣的《R和Ruby数据分析之旅》会帮你找到日常生活中某些问题的真正答案。借助基本的数学方法,并使用Ruby和R语言做一些简单的编程工作,你就能学会如何对问题建模,并找出...
ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码
主要介绍了Ruby基础知识之数据类型,本文讲解了数值类型、字符串类型、字符类型、哈希类型、范围类型、对象标识、对象的类、类型等内容,需要的朋友可以参考下