软件开发数据类型基础

  一个字节包含8位, 第一位是符号位, 8位就可以是代码27次方, 所以范围为-2^7 ~ 2^7 - 1, 即-128到+127;

  各种数据类型:

    byte类型就是1个字节,能够代表的范围为-2^7 ~ 2^7 - 1;

    short类型为2个字节,能够代表的范围为-2^16 ~ 2^16 - 1;

    int类型为4个字节,能够代表的范围为-2^31 ~ 2^31 - 1;

    long类型为8个字节,能够代表的范围为-2^64 ~ 2^64 - 1;

    flaot的类型也为4字节, 但是它的范围比int大得多(来自百度知道:位符号位+8位指数(q)+23位底数(b),其解释出来的形式是:b^q,由于指数q是8位有符号整数,范围是-128 ~ 127,23位的底数(无符号)最大值就是2 ^ 23,算上指数的话,最大可以表达到2 ^ 23 ^ 127,但是由于计算机的运算能力限制,并不能处理到如此大的数,但是其取值范围也会比32位整数大很多。 由于float类型是一个幂计算式,所以很多时候并不能表达一个精确值,例如0.1,如果使用float在内存中会被表示为0.10000000000000001,如果进行反复计算将会导致非常大的误);

    double类型也为8个字节;

  移位运算, 有符号左移"<<":

public class Test {
    public static void main(String args[]) {
        System.out.println( 10<<1 ); //相当于: 10*2
        System.out.println( 10<<2 ); //相当于:10*2^2
        System.out.println( 10<<3 ); //相当于:10*2^3
        System.out.println( 10<<4 ); //相当于:10*2^4
    }
}

//输出:

  20
  40
  80
  160

  

作者: NONO
出处:http://www.cnblogs.com/diligenceday/

  有符号右移动">>":

public class Test {
    public static void main(String args[]) {
        int num = 160;
        System.out.println( num>>1 );
        System.out.println( num>>2 );
        System.out.println( num>>3 );
        System.out.println( num>>4 );
    }
}
//输出:
80
40
20
10

  >>>:无符号右移,忽略符号位,空位都以0补齐;

  无符号右移有个特性必须记住,因为在二进制中:负数的值正数的取反+1 ,当我们对一个负数进行无符号右移, 那么无符号右移的值将会非常大:

public class Test {
    public static void main(String args[]) {
        int num = -1;
        System.out.println( num>>>1 );
    }
}//输出:2147483647

  ~:按位取反;

  &:按位且;

  |:按位或;

  ^:按位异或;

  但是这些玩意儿有什么用呢, 参考如下的js代码, 原文链接

(!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]

  会输出:"sb"

  或者这样装逼...

((""[~+[]]++)+"")[(+[])]+(!+[]+{})[(~((~+[]+~+[])<<(-(~+[]))))]

  会输出:"Ne"

  进制之间的转化参考, 进制参考

  10进制到2进制:

  

  2进制到10进制:

      

  

作者: NONO
出处:http://www.cnblogs.com/diligenceday/

时间: 2024-08-08 05:36:45

软件开发数据类型基础的相关文章

软件开发技术基础复习要点

软件开发技术基础复习要点 1.生存周期: 指一个软件从提出开发要求开始,经过需求分析.设计.制造.调试.使用.维护,直到软件产品被淘汰为止的整个过程. 2.简述软件工程的基本原理: 用分阶段的生命周期计划严格管理: 坚持进行阶段评审: 实行严格的产品控制: 采纳现代程序设计技术: 结果应该能清楚地审查: 开发小组应小而精: 承认不断改进软件工程实践的必要性. 3.简述产生软件危机的原因和解决办法: 原因:开发软件所需的高成本与软件产品的低质量之间存在尖锐的矛盾,致使软件开发陷入循环之中,即研制软

进行软件开发的基础知识

        软件开发:需要做什么? 如何做? 用什么去完成?        一.过程:控制和管理软件开发活动 软件过程用来控制和管理软件团队的开发活动和进度,对于个人来说,也需要使用一定的过程方法来规范化自己的开发流程. 一个值得尝试的方案是:迭代+瀑布模型+测试驱动开发. 这种方案首先将系统分成多个迭代故事,然后,针对每个迭代故事使用瀑布模型并融入测试驱动开发理念. 具体做法: S1:将系统开发分解为多个故事的迭代,每个故事中包含若干个模块. S2:针对每个故事中的模块,使用 “需求分析-

软件开发流程(基础)

软件开发流程 跨行招工作的渣渣!暴风哭泣.... 小米(智能硬件部)一面,二面都让我详细说一下软件开发流程 定义 软件开发流程: wiki:软件开发过程(software development process)是软件开发的生命周期(software development life cycle),各个阶段实现了软件的需求定义分析.设计.实现.测试.交付和维护.软件开发过程是在开发和构建系统时应遵循的步骤,是软件开发的路线图 常见的过程模型: 敏捷开发-瀑布模型 requirements->de

软件开发的金字塔

 在软件开发中,可以用一个金字塔来形容从需求分析到编码这整个过程.从中来分析整个开发过程以及开发过程中是否规范的利与弊. 金字塔从下到上依次是由需求分析.概要设计.详细设计.编码组成,这里把需求分析又分成了需求和软件需求规格说明书,如图1所示: 图1 规范的软件开发金字塔 下面从下到上开始来分析规范的软件开发金字塔. 在软件开发中,无论你的软件或大或小,需求分析是最重要且必不可少的,也是整个软件开发的基础.图1中浅绿色部分即为需求分析,这里把需求分析分为需求和软件需求规格说明书.在实际的项目

如何评估个人的软件开发能力

如何评估个人的软件开发能力 基础: 1.读程序的能力 很多的软件开发工作不一定会从头开始,这就需要开发人员有良好的阅读程序的能力,能在尽可能短的时间里了解软件整体的架构,理解该软件初始的开发思想,能迅速并有效地参与到项目开发中去. 2.编码能力 这点会涉及到开发人员对所用语言的熟练程度,和该开发人员的编程风格.是否拥有良好的编程习惯,能遵循通用的编程规范,并作好注释,对该开发人员所开发代码的易读性和易维护性有很大的影响. 3.调试和测试能力 现代的软件行业中,代码的调试和测试时间并不比编码时间短

如何避免游戏软件开发标准的不确定性

游戏行业常见的合作模式是由一方负责研发.升级及维护游戏软件,另一方作为游戏软件开发的独家代理商,负责该游戏的运营.推广.发行.使用.服务.在双方签署<软件开发合同>时,考虑到游戏软件本身的技术性和软件功能项.模块项的不确定性,往往对游戏软件的开发要求和标准不作具体约定,导致双方对合同履行产生争议,继而对簿公堂.笔者借本文谈谈自己的看法并提出解决方案,如何不让“友谊的小船”说翻就翻. 游戏上线流程图中各环节研发者和代理商的合同义务基本明晰,就是在第三个环节的“双方商议修改”涉及到需要研发者和代理

我的IT梦——web前端开发之软件开发入门C#基础篇(一)

C#编程基础带你走进软件开发 一.开发入门 1.C#=C sharp 了解:源代码→机器代码→计算机→控制台.即是源代码通过编译器编译转换为能够使计算机读懂的机器代码,并通过控制台输出.也就是code→compile→run的过程. 2.我的第一个小程序(Hello,World) 步骤:新建一个文本文档,重命名为MyFirstProgram.txt→在我的电脑中找到C#编辑器csc.exe文件路径并复制→Windows键+R打开运行cmd→输入cd,空格,粘贴路径,回车→继续输入csc,空格,/

Day4 - Python基础4 迭代器、装饰器、软件开发规范

Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我要求你把列表里的每个值加1,你怎么实现?你可能会想到2种方式 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>

电脑小白学习软件开发-C#语言基础之循环重点讲解,习题

写代码也要读书,爱全栈,更爱生活.每日更新原创IT编程技术及日常实用视频. 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是不在话下. 本教程是基础教程,适合任何有志于学习软件开发的人.当然因为技术的连贯性,推荐按照顺序查看. 上次课程:电脑小白自学软件编程-.Net语法基础之循环语句,纯技巧干货 近期,致力于进行C#语言教程的写作.写一系列可以供电脑小白学习软件开发的文章,帮助更多初学者入门学习IT编程. 课程总目录:因头条无法自定义目录,大家关注:“做全栈攻城狮”微信公众号