`

Ruby的运算符!和数据类型Numbers小结

阅读更多

这篇文章应该是承接

SSD06 Exercise02 个人解答

文章的,由于原问题中必需用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)
 

未完待续...

分享到:
评论

相关推荐

    02Ruby 运算符.docx

    Ruby还有一个强大的标准库,提供了丰富的工具和功能,使开发者能够快速构建各种类型的应用程序。Ruby还有一个流行的Web框架Ruby on Rails,被广泛应用于Web开发领域。总的来说,Ruby是一种灵活、强大且易于学习的...

    Ruby的运算符和语句优先级介绍

    虽然 Ruby 一直把最小惊讶原则作为它的哲学之一,但还是常常看到让人惊讶不已,难于理解的代码,这可能是因为对它运算符和语句优先级理解不透导致,今天就和大家聊一聊 Ruby 运算符和语句的优先级。 先看一句简单的...

    Hello, Ruby World!

    对 Ruby 语言进行了简单介绍。

    Ruby基础知识-数据类型.pdf

    Ruby基础知识-数据类型.pdf

    Ruby的教程.txt

    变量、常量和数据类型:学习Ruby中变量的定义和命名规则,了解常量的使用,掌握基本的数据类型(如整数、浮点数、字符串等)。 运算符与控制流:掌握Ruby中的运算符(如算术运算符、比较运算符、逻辑运算符等),...

    ruby基本数据类型简明介绍

    概括、ruby中的基本数据类型都是类类型,只不过为了书写和阅读的方便,为基本数据类型提供了较为简洁的书写方式而已。 一、数值类型 整数支持二进制,八进制,十进制,十六进制,根据整数的大小动态决定整数是Fixnum...

    学习ruby单元测试小结

    学习ruby单元测试小结,主要是对Test::Unit的理解和学习

    servant-ruby:从您的仆人 API 生成 Ruby 客户端!

    仆人Ruby 从您的仆人 API 生成 Ruby 客户端!

    Ruby程序设计语言 (涵盖Ruby 1.8和1.9)源代码

    《Ruby程序设计语言》是Ruby的权威指南,全面涵盖该语言的1.8版和1.9版。本书详尽但并不拘泥于语言... 数据类型和对象  表达式和操作符  语句和控制结构  Method、proc、lambda和closure  类和模块  反射和元编程

    Ruby 数据类型.pdf

    uby支持的数据类型包括基本的Number、String、Ranges、Symbols,以及true、false和nil这几个特殊值,同时还有两种重要的数据结构——Array和Hash。

    Ruby-rgeoRuby的地理空间数据的库

    rgeo - Ruby的地理空间数据的库。空间数据类型、几何和球面计算和WKT / WKB序列化

    Ruby 小白入门指南理解 Ruby 及其特点.txt

    变量和数据类型:Ruby 支持多种基本数据类型,包括整数、浮点数、字符串、数组、哈希等。你需要了解如何声明和使用这些变量,以及它们之间的区别和用法。 条件语句和循环:Ruby 使用 if...else、case、while、for 等...

    Ruby常见面试题.pdf

    3. Ruby中常用的数据类型有哪些?请列举几种常见的Ruby数据类型。 4. Ruby中如何进行条件判断和控制流程?请列举几种条件判断和控制流程的语句。 5. 什么是Ruby中的字符串(String)操作?请说明在Ruby中的字符串...

    R和Ruby数据分析之旅

    R和Ruby数据分析之旅 数据分析 数据挖掘

    pru, Pipeable ruby 忘记 grep/sed/awk/wc. 使用纯,可以读的ruby !.zip

    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+编程语言的基础知识:变量、运算符、流程控制

    Ruby 是一种高级编程语言, 它被用于开发各种应用程序和网站。 自 2000 年以来, Ruby 已经成为了互联网编程中最受欢迎的工具之一。 本文将详细 介绍 Ruby 编程语言的基础知识, 包括变量、 运算符、 流程控制、 ...

    R和Ruby数据分析之旅,中文完整扫描版

    如果你对万事万物的运行方式充满好奇,这本有趣的《R和Ruby数据分析之旅》会帮你找到日常生活中某些问题的真正答案。借助基本的数学方法,并使用Ruby和R语言做一些简单的编程工作,你就能学会如何对问题建模,并找出...

    ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码

    ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码

    Ruby基础知识之数据类型

    主要介绍了Ruby基础知识之数据类型,本文讲解了数值类型、字符串类型、字符类型、哈希类型、范围类型、对象标识、对象的类、类型等内容,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics