`

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的运算符和语句优先级介绍

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

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

    本文档旨在详细介绍Ruby支持的各种基本数据类型及其使用方法,包括但不限于Number(数值)、String(字符串)、Ranges(范围)、Symbols(符号)以及特殊值true、false和nil。此外,还会涵盖两种重要的复合数据结构...

    Ruby 数据类型.pdf

    本文档将详细介绍Ruby支持的各种数据类型及其用途,帮助开发者更好地理解和使用这些类型来构建高效、灵活的应用程序。 #### 数字类型(Number) 数字类型是Ruby中最基本的数据类型之一,它分为整数(Integer)和...

    Ruby+编程语言的基础知识:变量、运算符、流程控制

    Ruby是一种弱类型语言,不需要在声明变量时指定变量的数据类型,Ruby解释器会根据赋值自动判断。变量名由字母、数字、下划线组成,但不能以数字开头,并且必须以小写字母或下划线开头。例如: ```ruby number = 10 #...

    Ruby基础语法+Ruby变量与数据类型+Ruby控制结构+Ruby函数与方法+Ruby面向对象编程等全套教程

    Ruby变量与数据类型 Ruby控制结构 Ruby函数与方法 Ruby面向对象编程 Ruby模块与包 Ruby错误处理 Ruby文件与I/O操作 Ruby正则表达式 Ruby网络编程 Ruby数据库交互 Ruby测试框架 RubyWeb框架Rails入门 Ruby高级特性 ...

    Ruby语言介绍.doc

    数据类型:Ruby支持多种数据类型,包括整数(Integer)、浮点数(Float)、字符串(String)、数组(Array)和哈希表(Hash)等。 运算符:Ruby支持常见的算术运算符(如+、-、*、/)、比较运算符(如==、!=、...

    Ruby Data-Processing ruby数据处理

    Map、Reduce和Select是Ruby中用于操作和处理数据的关键概念,它们在数据科学、分析和软件工程领域中扮演着重要角色。 1. **Ruby Map**: Map函数允许我们将一个操作应用到数组或集合中的每一个元素上,然后返回一个...

    RubyStudy-master-ruby学习笔记

    了解变量、数据类型、运算符、控制结构、函数和对象等基本概念。其次,选择合适的学习资源。有很多优秀的 Ruby 教程和书籍,例如《Ruby 编程语言》、《Ruby 元编程》等。这些资源可以帮助你快速掌握 Ruby 的基础知识...

    ruby基本数据类型简明介绍

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

    ruby基础教程(第四版)第9章 运算符1

    在第9章“运算符1”中,我们主要探讨了两种逻辑运算符:`||`(或)和`&&`(与),以及条件运算符(三元运算符)和范围运算符。此外,还提到了如何在Ruby中自定义运算符。 首先,`||`运算符,也称为逻辑或运算符,它...

    Ruby面试题和答案(2024年收集更新)

    - **数据类型**: Ruby支持多种数据类型,包括数字、字符串、符号、哈希、数组和布尔值等。 综上所述,Ruby是一种功能强大、灵活且易学易用的编程语言,适用于广泛的软件开发场景。无论是初学者还是经验丰富的开发者...

    Ruby的语法和语言特性总结

    Ruby是一种高级的、动态类型的编程语言,它的设计哲学强调简洁性和表达性。在Ruby中,一切都是对象,这使得它成为一种纯面向对象的语言。下面我们将深入探讨Ruby的语法和语言特性,包括基础语法、编程模型、流程控制...

    Ruby Pocket Reference.pdf

    文档提到了一些关键内容的目录结构,例如运行 Ruby 解释器、使用 Unix/Linux 系统中的 Shebang 行、在 Windows 上关联文件类型、Ruby 的保留字、运算符、注释、数字、变量、符号、预定义变量、伪变量、全局常量、...

    Ruby完全自学手册

    1. Ruby基础语法:变量、常量、数据类型、运算符、控制结构等。 2. 面向对象编程:类与对象、继承、多态、封装、模块等。 3. 高级特性:块(Block)、迭代器(Iterator)、元编程、反射等。 4. 标准库的使用:文件...

    ruby 中文 教程 从入门到精通

    - **数据类型**:Ruby支持多种内置的数据类型,如整型、浮点型、字符串、数组、哈希等。 - **赋值和条件运算符**:Ruby支持多种赋值运算符,如`=`、`+=`、`-=`等,以及条件运算符如`? :`。 - **条件判断与循环语句**...

    游戏脚本语言(ruby初步)

    Ruby语言的基本用法包括变量、数据类型、运算符、控制结构、函数等。 在 Ruby语言中,有多种方式来运行 Ruby程序,包括使用 Ruby解释器、使用FreeRIDE和SciTE、使用fxri等。 Ruby-irb是一个交互式的 Ruby shell,...

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

    Rgeo库不仅支持基本的空间数据类型,还包含了复杂的几何运算以及与Well-Known Text (WKT)和Well-Known Binary (WKB)格式的序列化和反序列化功能。 一、空间数据类型 Rgeo提供了一套完整的空间数据类型,包括点...

Global site tag (gtag.js) - Google Analytics